我可以在Flutter中创建类似Toasts的东西吗?
只是一个很小的通知窗口,不直接面对用户,也不锁定或淡出它后面的视图。
我可以在Flutter中创建类似Toasts的东西吗?
只是一个很小的通知窗口,不直接面对用户,也不锁定或淡出它后面的视图。
当前回答
fluttertoast: ^ 3.1.3
import 'package:fluttertoast/fluttertoast.dart';
Fluttertoast.showToast(
msg: "This is Center Short Toast",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIos: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0
);
其他回答
更新:Scaffold.of(上下文)。showSnackBar在Flutter 2.0.0中已弃用(稳定)
你可以使用ScaffoldMessenger.of(context)访问父类ScaffoldMessengerState。
然后做一些类似的事情
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text("Sending Message"),
));
零食条是材料设计的官方“吐司”。看到间小吃店。
下面是一个完整的例子:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Home(),
);
}
}
class Home extends StatelessWidget {
const Home({
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Snack bar'),
),
body: Center(
child: RaisedButton(
onPressed: () => _showToast(context),
child: const Text('Show toast'),
),
),
);
}
void _showToast(BuildContext context) {
final scaffold = ScaffoldMessenger.of(context);
scaffold.showSnackBar(
SnackBar(
content: const Text('Added to favorite'),
action: SnackBarAction(label: 'UNDO', onPressed: scaffold.hideCurrentSnackBar),
),
);
}
}
在这里买颤振吐司包
将这个包添加到文件pubspec.yaml中的项目依赖项中。
然后当你想要吐司显示时,就像点击一个按钮:
Toast.show("Toast plugin app", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
使用fluttertoast插件
将这一行添加到依赖项中
fluttertoast: ^8.1.1
然后你可以使用Toast无构建上下文(功能有限,无法控制UI,请检查文档)
Fluttertoast.showToast(
msg: "This is a Toast message",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
textColor: Colors.white,
fontSize: 16.0
);
Importcupertino_icons: ^0.1.2并编写以下代码:
showToast(BuildContext context, String message) {
showDialog(
context: context,
builder: (BuildContext context) {
return CupertinoAlertDialog(
title: Text(
"Name of App",
),
content: Text(
message,
),
actions: [
CupertinoButton(
child: Text("OK"),
onPressed: () {
Navigator.of(context).pop();
},
)
],
);
},
);
});
您可以使用飘动吐司包装。为此,将其添加到pubspec中。Yaml文件如下:
dependencies:
fluttertoast: ^8.0.8
然后在需要吐司的.dart文件中导入这个包并编写代码。
例如,参考以下代码:
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
class ToastExample extends StatefulWidget {
@override
_ToastExampleState createState() {
return _ToastExampleState();
}
}
class _ToastExampleState extends State {
void showToast() {
Fluttertoast.showToast(
msg: 'This is flutterToast example', // Message
toastLength: Toast.LENGTH_SHORT, // toast length
gravity: ToastGravity.CENTER, // position
timeInSecForIos: 1, // duaration
backgroundColor: Colors.red, // background color
textColor: Colors.white // text color
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Toast Tutorial',
home: Scaffold(
appBar: AppBar(
title: Text('Toast Tutorial'),
),
body: Padding(
padding: EdgeInsets.all(15.0),
child: Center(
child: RaisedButton(
child: Text('Show Toast'),
onPressed: showToast,
),
),
)
),
);
}
}
void main() => runApp(ToastExample());