gpt4 book ai didi

flutter - Flutter检测Navigator准备就绪的时间

转载 作者:行者123 更新时间:2023-12-03 04:38:07 26 4
gpt4 key购买 nike

在Flutter应用程序上工作时,我正在使用SDK进行深层链接,该应用程序启动后将为我提供一个必须处理的SDK,因此必须在main()中进行处理。
收到深层链接后,我必须根据沿深层链接数据传递的参数导航到正确的屏幕。
由于我在主要功能中收到了深层链接,因此我脱离了应用程序的上下文,因此要访问NavigatorState,我使用了一个导航单例,并将GlobalKey传递给了CupertinoAppnavigatorKey。稍后,我将使用此键来检索NavigatorState并调用push。 (而不是Navigator.of(context)...
但是,如果从深度链接打开应用程序,则navigatorKey很可能不包含任何内容(尚未)。
如何检测/等待导航器准备就绪?
到目前为止,我的方法是在WidgetsBinding.instance.addPostFrameCallbackApp中添加initState,从而解决了一个 promise ,该 promise 指示何时可以使用指向GlobalKeyNavigatorState ......我敢肯定,有一种更好的方法可以实现这一点。

最佳答案

为此,我将initialRoute设置为Loading屏幕并在其中执行所有逻辑,这样我可以拥有不同的initialRoutes,而不必担心没有MediaQuery,Navigator或ThemeData。
但是问题指定了一种方法来知道导航器是否可用,为此,我将使用MaterialApp / WidgetsApp / CupertinoApp的builder函数,它用于替代导航器,我可以使用它来添加填充和全局背景色,甚至覆盖带有自定义控件的导航器小部件,

CupertinoApp(
...
builder: (context, child){
//The navigator is ready
Future.delayed(Duration.zero,
() => print(navigatorKey.currentContext)); //We use a delayed since the child needs to be returned first. It's kinda like a hack 7u7
return child;
}

关于flutter - Flutter检测Navigator准备就绪的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63746809/

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