带有导航键而不是传递上下文的Flutter showDialog
问题内容:
目前,它非常忙于显示应用程序中任何代码层的对话框,只是
因为必须在其中传递上下文。因此,我想传递
navigatorKey.currentContext(导航键是传递给Material
应用程序navigatorKey参数的全局键)以显示对话框。但是我得到了错误
“使用不包含
导航器的上下文请求的导航器操作。用于从导航器推送或弹出路由的上下文必须是
作为导航器小部件的后代的小部件的上下文。”
问题是showDialog在内部调用Navigator.of(context)并查找
导航器的祖先,因为导航器
本身是根,所以它当然会返回null 。因此,它将不会找到导航器作为祖先。
有没有一种方法可以直接将导航器的状态/上下文传递给showDialog
函数以显示对话框?或者
,如果我们想从bloc中显示对话框,是否有一种更简单的方法来显示Dialog 而不传递上下文给它?
问题答案:
我找到了一个简单的解决方案:
navigatorKey.currentState.overlay.context
我在保留navigatorKey的redux中间件中使用了此功能,并希望
每次派发特定操作时在应用程序中的任何位置全局显示对话框。