Flutter 错误 GlobalKey 在一个小部件的子列表中多次使用

问题描述 投票:0回答:1

我正在使用 Fluro 包来处理我的项目导航,但是在重新加载我的页面之一后,我收到此错误:

enter image description here

Another exception was thrown: A GlobalKey was used multiple times inside one widget's child list.

这是我的 Material 应用程序代码片段:

class MyApp extends StatefulWidget {
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  _MyAppState() {
    final router = FluroRouter.appRouter;
    AppRouter.setupRouter(router);
    AppRouter.router = router;
  }
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (ctx) => Auth(),
        ),
        ListenableProxyProvider<Auth, Orders>(
          update: (_, authObj, prevOrders) =>
              Orders(authObj.usrName, authObj.objId)
      ],
      child: MaterialApp(
                  initialRoute: root,
                  onGenerateRoute: AppRouter.router.generator,
                  debugShowCheckedModeBanner: false,
                  home: authData.isAuth
                      ? TabsScreen()
                      : FutureBuilder(
                          initialData: authData.tryLogin(),
                          future: authData.tryLogin(),
                          builder: (_, snapshot) => snapshot.connectionState ==
                                  ConnectionState.waiting
                              ? SplashScreen()
                              : AuthScreen()),

                );
flutter dart navigation
1个回答
0
投票

如果您尝试访问声明的路线中未定义的路线并且您的 main.dart 文件无法决定要导航的路线,也可能会发生此错误。

Flutter error : A GlobalKey was used multiple times inside one widget's child

可能的解决方案是,您需要配置unknownroute后备,以防Getx可以在GetMaterialApp中定义unknownRoute

 unknownRoute: GetPage(
          name: "/splash",
          page: () => SplashView(),
          binding: SplashBinding(),
        ),

类似的其他插件如 go_router 和 navigator 也有类似的配置。

希望它有帮助,快乐编码!

© www.soinside.com 2019 - 2024. All rights reserved.