我可以在Flutter中创建类似Toasts的东西吗?
只是一个很小的通知窗口,不直接面对用户,也不锁定或淡出它后面的视图。
我可以在Flutter中创建类似Toasts的东西吗?
只是一个很小的通知窗口,不直接面对用户,也不锁定或淡出它后面的视图。
当前回答
你可以很容易地实现这种效果使用叠加。
代码:
OverlayEntry entry = OverlayEntry(builder: (context) {
return Positioned(
top: MediaQuery.of(context).size.height * 0.8,
child: Container(
width: MediaQuery.of(context).size.width,
alignment: Alignment.center,
child: const Card(
color: Colors.redAccent,
child: Padding(
padding: EdgeInsets.all(8),
child: Text("This is a message."),
),
),
));
});
//show overlay
Overlay.of(context)!.insert(entry);
//auto remove this overlay after 3 seconds
Future.delayed(const Duration(seconds: 3)).then((value) => entry.remove());
截图:
其他回答
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
);
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();
},
)
],
);
},
);
});
如果目前给出的Fluttertoast包不奏效,那么我建议你试试吐司。
它没有装饰,也没有仪式。
它就是有用。 我注意到在它的README文件中给出的例子中有一个错误: Toast.show ( “吐司插件应用程序”, 持续时间:烤面包。LENGTH_SHORT, 重力:Toast.BOTTOM); 而该方法需要一个上下文。所以要像这样添加“上下文”: Toast.show ( "Toast插件应用" 持续时间:烤面包。LENGTH_SHORT, 重力:Toast.BOTTOM); 有一个机会,这将在你检查的时候被修复。我已经提交了PR。
将flutter_just_toast添加到Pubspecs中的依赖项中。yaml文件。
依赖关系:
flutter_just_toast: ^1.0.1
接下来将包导入到你的类中:
import 'package:flutter_just_toast/flutter_just_toast.dart';
用一条消息实现Toast:
Toast.show(message: "Your toast message",
duration: Delay.SHORT,
textColor: Colors.black);
要显示Toast消息,您可以使用FlutterToast插件。要使用这个插件,你必须:
将此依赖项添加到您的pubspec中。Yaml文件:fluttertoast: ^8.0.8 要获取包,必须运行以下命令:$ flutter packages get 导入包:导入'package:fluttertoast/fluttertoast.dart';
像这样使用它:
Fluttertoast.showToast(
msg: "your message",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.BOTTOM // Also possible "TOP" and "CENTER"
backgroundColor: "#e74c3c",
textColor: '#ffffff');
要了解更多信息,请查看这个。