我有一个应用程序可以使用OneSignal接收推送通知。我做了一个通知打开处理程序,应在单击通知时打开特定的屏幕。我如何导航到没有上下文的屏幕。或如何在应用启动时打开特定屏幕。我的代码:
OneSignal.shared.setNotificationOpenedHandler((notification) { var notify = notification.notification.payload.additionalData; if (notify["type"] == "message") { Navigator.of(context).push( MaterialPageRoute( builder: (context) => DM(user: notify['id']), ), ); } if (notify["type"] == "user") { Navigator.of(context).push( MaterialPageRoute( builder: (context) => Profileo(notify["id"]), ), ); } if (notify["type"] == "post") { Navigator.of(context).push( MaterialPageRoute( builder: (context) => ViewPost(notify["id"]), ), ); } });
首次打开该应用程序时,我可以实现此目的,但是,即使我关闭了该应用程序,即使重新打开它,它也只能打开主页。我想那是因为上下文已更改。
请帮忙!!
在这里看这个:https : //github.com/brianegan/flutter_redux/issues/5#issuecomment-361215074
您可以为导航设置全局键:
final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();
将其传递给MaterialApp:
new MaterialApp( title: 'MyApp', onGenerateRoute: generateRoute, navigatorKey: navigatorKey, );
推送路线:
navigatorKey.currentState.pushNamed('/someRoute');