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