Flutter showDialog 使用导航键而不是传递上下文

2024-03-28

目前,从应用程序中的任何代码层显示对话框都非常忙碌,因为必须在其中传递上下文。因此我想传递 navigatorKey.currentContext (导航键是传递给 Material 应用程序 navigatorKey 参数的全局键)来显示对话框。但我得到了错误

“使用不包含导航器的上下文请求导航器操作。用于从导航器推送或弹出路由的上下文必须是作为导航器小部件后代的小部件的上下文。”

问题是 showDialog 在内部调用 Navigator.of(context) 并查找导航器祖先,这当然会返回 null,因为导航器本身就是根。因此它不会找到导航器作为祖先。

有没有一种方法可以直接将导航器状态/上下文传递给 showDialog 函数来显示对话框?或者如果我们想从块中显示它,是否有更简单的方法来显示对话框而不向其传递上下文?


我找到了一个简单的解决方案:

navigatorKey.currentState.overlay.context

我在保存 navigatorKey 的 redux 中间件中使用它,并且希望每次调度特定操作时在应用程序中的任何位置全局显示一个对话框。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter showDialog 使用导航键而不是传递上下文 的相关文章

随机推荐