android - 在 Flutter 应用程序的每个屏幕上挂载常用小部件
问题描述
如何在颤振应用程序的每个屏幕上添加一个通用小部件。我在 StackOverflow 上找到了另一个答案,但我不想在每个页面上分别添加 CommonWidgets 页面。我正在寻找一种只声明一次通用小部件的方法。
我正在尝试包含一个可以通过颤振应用程序访问的警报屏幕,并且我希望AlertsScreen
小部件是状态驱动的(即,将值推送到AlertsScreenState
任何地方,然后警报将弹出)。
我做了这样的事情:
MaterialApp(
builder: (BuildContext context, Widget widget) {
setErrorBuilder();
return Column(
children: <Widget>[
Expanded(
child: widget,
),
AlertsScreen(),
],
);
},
title: 'App name',
onGenerateRoute: Router.onGenerateRoute,
initialRoute: Router.splashScreen,
navigatorKey: Router.navigator.key,
),
它工作正常,甚至我可以使 mobx 状态管理工作得非常好,但是当我尝试使用小部件中的上下文显示任何小AlertsScreen
部件时,它会抛出错误:
[错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:使用不包含导航器的上下文请求导航器操作。用于从 Navigator 推送或弹出路由的上下文必须是作为 Navigator 小部件后代的小部件的上下文。
冲洗条示例:
Flushbar(
title: 'title',
message: 'body',
duration: const Duration(seconds: 5),
).show(context);
每当我尝试Flushbar
使用小部件的上下文进行显示时,都会引发上述错误AlertsScreen
。我怀疑引发此错误是因为导航器当前正在呈现应用程序的另一个小部件并且AlertsScreen
无法正确访问上下文。
我如何让它工作?
解决方案
推荐阅读
- javascript - 如何在浏览器窗口的最右侧制作离子/反应滚动条
- laravel - 合并方法在 voyager laravel 中不起作用
- google-sheets - 谷歌表格自下而上在多个标签上进行 Vlookup
- c - 在 C 中将邻接矩阵转换为邻接表
- python - 为什么 tweepy api.create_friendship 给我一个未经授权的错误
- angularjs - 使用 $https 从 AngularJS 调用 .NET Core API - 400 Bad Request
- html - 从 html 列表中随机选择一项
- c++ - 如何将子组件函数重定向到 C++ 中的子函数?
- c++ - 功能模板的特化,不改变其原型
- c++ - 您可以转发声明未声明模板类的显式特化吗?