【发布时间】:2019-10-22 03:03:22
【问题描述】:
是否有正确的方法从“根”页面或 Flutter 应用程序中的位置监听流/范围模型,并在接收到一些数据后在任何当前打开的页面上显示适当的通知(例如 Snackbar)(可能不是主页)?
我希望能够在整个应用程序中显示某些通知,而不仅仅是逐页显示。
这里有一个主页,它是我的应用程序初始页面,它开始侦听从上下文中检索到的 scoped_model 的流,并且无论用户正在访问哪个页面,只要接收到数据就会显示一个对话框。
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
MyService service = ScopedModel.of<MyService>(context);
service.events.stream.listen((data) {
showDialog<String>(
context: context,
barrierDismissible: true, // dialog is dismissible with a tap on the barrier
builder: (BuildContext context) {
return AlertDialog(
title: Text('An Event has Occurred'),
content: Text('$data'));});
});
return Scaffold(
//Navigator Push Routes - Page 1 / Page 2 / Page 3 / etc
);}
这种方法可行,但感觉不正确 - 有没有人这样做过,谁能提供更好的解决方案?
我可以为每个页面添加一个类似的监听器,但这似乎真的没有必要
【问题讨论】:
-
我有一个类似的问题,有人找到了解决方案。也许它也对你有帮助:stackoverflow.com/q/56664760/6586631
标签: flutter dart scoped-model