gpt4 book ai didi

dart - flutter 路由

转载 作者:IT王子 更新时间:2023-10-29 07:00:24 24 4
gpt4 key购买 nike

我的应用程序上有一个主页/主屏幕,一旦用户通过身份验证就会显示该屏幕,我没有将此屏幕包含在 MaterialApp 类的路由参数中,因为它在被调用之前就已经初始化并导致了很多错误:

        home: WelcomeScreen(),
initialRoute: "/splash",
routes: <String, WidgetBuilder>{
"/welcome": (_) => WelcomeScreen(),
"/splash": (_) => SplashScreen(),
//"/main":(_)=>Main(),
});

这就是我打开主屏幕的方式:

Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(
builder: (context)=>Main()), (Route<dynamic> route) => false);

现在我有一个屏幕,当一个进程完成时,我需要弹出堆栈直到主屏幕,但由于主屏幕没有添加到 routes 我无法使用 <导航到它/p>

Navigator.popUntil(context, ModalRoute.withName("home screen here"));

只有在初始化时才将主屏幕添加到路由中的方法吗?

更新:我试过这样调用主屏幕

Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(
builder: (context)=>Main(),settings: RouteSettings(name: "/home")), (Route<dynamic> route) => false);

但是我在使用这个时得到了一个Could not find a generator for route异常:

Navigator.of(context).pushNamedAndRemoveUntil("/home", ModalRoute.withName("/home"));

最佳答案

很难说这里发生了什么。

"/main" 添加到命名路由列表中不会导致任何问题,因为 routes 仅包含 WidgetBuilder,这意味着在您按下 "/main" 之前,不会调用 Main 构造函数,并且应该没有初始化问题。不确定是什么原因导致您的问题,错误消息会有所帮助。


从命名路由中删除斜杠可能是个好主意,因为斜杠暗示有一个名为 "/" 的路由是 "welcome"< 的父路由"splash""main"。我认为你真正想要的是三个顶级路线:

<String, WidgetBuilder>{
"welcome": (_) => WelcomeScreen(),
"splash": (_) => SplashScreen(),
"main":(_) => Main(),
}

我发现的另一个问题是,您正在将 /main 添加到命名路由列表,但最终您是在推送 /home。可能是打字错误?

关于dart - flutter 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51982152/

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