gpt4 book ai didi

dart - 如何从 Flutter 中的通知导航到应用程序中的特定 MaterialPageRoute

转载 作者:IT王子 更新时间:2023-10-29 06:49:56 29 4
gpt4 key购买 nike

是否可以通过通知点击导航到应用中的特定 MaterialPageRoute?我在主屏幕中配置了通知:

void _configureNotifications() {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.requestNotificationPermissions();
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) {
_goToDeeplyNestedView();
},
onLaunch: (Map<String, dynamic> message) {
_goToDeeplyNestedView();
},
onResume: (Map<String, dynamic> message) {
_goToDeeplyNestedView();
},
);
}

_goToDeeplyNestedView() {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => DeeplyNestedView()));
}

问题是,当我这样配置它时,它只能从我配置通知的 Widget 中运行(我猜这是因为在 导航器.push()。有没有什么方法可以在不使用任何上下文的情况下从应用程序的任何位置访问 MaterialPageRoute?

预先感谢您的回答。

最佳答案

在很多情况下,使用 GlobalKey 是个好主意,但这可能是其中之一。

当您构建MaterialApp(我假设您正在使用)时,您可以传入一个navigatorKey。指定用于导航器的键的参数。然后您可以使用此键访问导航器的状态。这看起来像这样:

class _AppState extends State<App> {
final GlobalKey<NavigatorState> navigatorKey = GlobalKey(debugLabel: "Main Navigator");

@override
Widget build(BuildContext context) {
return new MaterialApp(
navigatorKey: navigatorKey,
home: new Scaffold(
endDrawer: Drawer(),
appBar: AppBar(),
body: new Container(),
),
);
}
}

然后要使用它,您需要访问 navigatorKey.currentContext:

_goToDeeplyNestedView() {
navigatorKey.currentState.push(
MaterialPageRoute(builder: (_) => DeeplyNestedView())
);
}

关于dart - 如何从 Flutter 中的通知导航到应用程序中的特定 MaterialPageRoute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52186837/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com