我想要在main()
之外和任何小工具之外读取GoRouter.
GoRouter提供程序的定义如下:
final goRouterProvider = Provider<GoRouter>(
(ref) {
return GoRouter(...);
}
然后,当我初始化flutter_local_notifications
时,我希望使用ProviderContainer读取此提供程序,类似于我在main()
方法上所做的操作:
static final FlutterLocalNotificationsPlugin _localNotificationsPlugin =FlutterLocalNotificationsPlugin();
_localNotificationsPlugin.initialize(
initializationSettings,
onDidReceiveNotificationResponse: (details) async {
final container = ProviderContainer();
container.read(goRouterProvider).pushNamed(AppRoute.someRandomRoute.name);
},
);
在这种情况下,我仍然在同一个屏幕上结束(没有采取导航操作),但与GoRouter初始化时相同的日志(log)(由于debugLogDiagnostics: true
标志).
我将这比作从main()
方法向下传递容器,后者确实如预期的那样导航到目的地.
这是否意味着ProviderContainer().read(GoRouterProvider)正在创建一个新的GoRouter实例?