一尘不染

带有导航键而不是传递上下文的Flutter showDialog

flutter

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

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

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

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


阅读 288

收藏
2020-08-13

共1个答案

一尘不染

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

navigatorKey.currentState.overlay.context

我在保留navigatorKey的redux中间件中使用了此功能,并希望
每次派发特定操作时在应用程序中的任何位置全局显示对话框。

2020-08-13