我可以在Flutter中创建类似Toasts的东西吗?
只是一个很小的通知窗口,不直接面对用户,也不锁定或淡出它后面的视图。
我可以在Flutter中创建类似Toasts的东西吗?
只是一个很小的通知窗口,不直接面对用户,也不锁定或淡出它后面的视图。
当前回答
对于Android原始图形吐司,你可以使用这个:
它在Android和iOS上运行良好。
其他回答
在Flutter应用程序中有一个三种方式来显示吐司。
我会告诉你我所知道的三种方法,并选择你想要使用的一种。我推荐第二种。
1:使用外挂包。
这是第一个方法,这是最简单的方法显示吐司在Flutter应用程序。
首先,您必须将这个包添加到文件pubspec中。YAML:
flutter_just_toast:^version_here
然后在您想要显示toast的文件中导入该包。
'package:flutter_just_toast/flutter_just_toast.dart';
最后一步是祝酒词。
Toast.show(message: "Your toast message",
duration: Delay.SHORT,
textColor: Colors.black);
2:使用官方的方式。
这种方法也很简单,但你必须处理它。我并不是说它很难,而是简单干净,我会推荐这种方法。
对于这个方法,你所要做的就是使用下面的代码。
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("Sending Message"),
));
但是请记住,您必须使用脚手架上下文。
3:使用本地API。
现在,当你已经有了上面的两个方法时,这个方法就没有意义了。使用这种方法,你必须为Android和iOS编写本地代码,然后将其转换为插件,你就可以开始了。
这种方法会消耗你的时间,你必须重新发明轮子。这已经被发明出来了。
要显示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');
要了解更多信息,请查看这个。
对于那些正在寻找能在路线变化中幸存下来的吐司的人来说,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!"),
));
您可以使用飘动吐司包装。为此,将其添加到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());