flutter 有没有办法用GoRouter在导航器下插入一个小部件?

whhtz7ly  于 2023-02-05  发布在  Flutter
关注(0)|答案(1)|浏览(135)

MaterialApp构造函数中,我在builder方法中注入了一个小部件来处理推送通知。(使用another_flushbar)但是我需要在上下文中有一个导航器,MaterialApp的构建器在导航器上方注入,所以当我尝试使用它来推送我的通知栏时,没有可通过上下文访问的导航器。
当然,我可以用我的通知处理小部件来 Package 应用的每个屏幕,但这违背了我的初衷。我想要一个小部件,它在应用运行时总是显示在屏幕上,而且无论我在应用中的什么地方,它都能显示我的通知栏。
你知道我该怎么做吗?

polhcujo

polhcujo1#

下面是我解决这个问题的方法,同时仍然使用MaterialAppbuilder将我的NotificationHandler小部件注入到Navigator之上。
1.我的NotificationHandler小部件接受GlobalKey<NavigatorState> navigatorKey属性
1.当我在MaterialAppbuilder中初始化我的NotificationHandler小部件时,我传递给它GoRouter.routerDelegate.navigatorKey
1.在NotificationHandler内部,当我需要一个上面有Navigator的上下文时,我使用navigatorKey.currentContext而不是本地小部件上下文。
该解决方案的灵感来自this issue

相关问题