我可以在Flutter中创建类似Toasts的东西吗?
只是一个很小的通知窗口,不直接面对用户,也不锁定或淡出它后面的视图。
我可以在Flutter中创建类似Toasts的东西吗?
只是一个很小的通知窗口,不直接面对用户,也不锁定或淡出它后面的视图。
当前回答
您可以使用此链接在Flutter中显示Toast。
可以这样使用:
void method1(){
Fluttertoast.showToast(
msg: "This is Add Button",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.blueGrey,
textColor: Colors.white,
fontSize: 14.0
);
}
其他回答
在Flutter中显示Toast消息非常简单:
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("Toast Text Here"),
));
对于那些正在寻找能在路线变化中幸存下来的吐司的人来说,SnackBar可能不是最好的选择。
让我们来看看Overlay。
答案Scaffold.of(context). showsnackbar(…)在大多数情况下都不起作用。
我建议最佳的方法是在类中声明一个Scaffold state键,并将其分配给Scaffold,如下所示:
GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
然后
Scaffold(
key: _scaffoldKey,
...
)
当你想要显示零食栏时,这样做:
_scaffoldKey.currentState.showSnackBar(SnackBar(
content: Text("This works!"),
));
用https://pub.dev/packages/toast做吐司。这个库非常容易使用,适用于iOS和Android。
显示Toast的语法:
Toast.show("Toast plugin app", duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
你可以很容易地实现这种效果使用叠加。
代码:
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());
截图: