Flutter 如何在没有上下文的情况下在颤振应用程序中导航?
我有一个应用程序,使用OneSignal接收推送通知。我已经创建了一个通知打开处理程序,它应该在单击通知时打开特定屏幕。如何在没有上下文的情况下导航到屏幕。或者如何在应用程序启动时打开特定屏幕。我的代码:Flutter 如何在没有上下文的情况下在颤振应用程序中导航?,flutter,Flutter,我有一个应用程序,使用OneSignal接收推送通知。我已经创建了一个通知打开处理程序,它应该在单击通知时打开特定屏幕。如何在没有上下文的情况下导航到屏幕。或者如何在应用程序启动时打开特定屏幕。我的代码: OneSignal.shared.setNotificationOpenedHandler((notification) { var notify = notification.notification.payload.additionalData; if (notify["type"
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"]),
),
);
}
});
当应用程序第一次打开时,我能够实现这一点,但只有当我关闭应用程序,即使我重新打开应用程序,它才会打开主页。我想那是因为环境改变了
请帮忙 看看这里:
您可以为导航设置全局键:
final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();
推送路线:
navigatorKey.currentState.pushNamed('/someRoute');
你可以使用这个很棒的插件: 包中的描述:一个一致的导航库,允许您在屏幕之间导航,打开对话框,并在代码中的任何位置显示snackbar,而无需上下文
Get.to(NextScreen()); // look at this simplicity :)
Get.back(); // pop()
Get.off(NextScreen()); // clears the previous routes and opens a new screen.
导航工作就像一个符咒一样是未定义的工作。。!!谢谢兄弟。@temirbek在main.dart中定义navigatorKey并导入到其他文件中。此外,将MaterialApp的navigatorKey属性设置为声明的全局键(navigatorKey),而不是MaterialApp@Mustafa你能提供样品吗?我读过很多博客和论坛都给出了相同的解决方案,但导航键可以从我的dio拦截器中访问。这个软件包太棒了!谢谢那个包裹真是救命稻草!
Get.to(NextScreen()); // look at this simplicity :)
Get.back(); // pop()
Get.off(NextScreen()); // clears the previous routes and opens a new screen.