一尘不染

使用导航键而不是传递上下文来晃动showDialog

flutter

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

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

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

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


阅读 229

收藏
2020-08-13

共1个答案

一尘不染

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

navigatorKey.currentState.overlay.context

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

2020-08-13