Flutter中GetX的unknownRoute配置无效触发报错如何解决?
报错原因
- 你使用的GetX 4.3.8版本存在已知的导航Key冲突bug:当
unknownRoute对应的GetPage没有显式指定唯一键时,框架会自动生成重复的导航GlobalKey,触发 widget 树中重复Key的报错。 - 部分场景下热重载残留的页面状态、或者项目中同时嵌套了
GetMaterialApp和原生MaterialApp,也会触发该类导航状态冲突问题。
解决方案
- 给
unknownRoute的GetPage显式添加唯一的键,修改你的GetMaterialApp配置如下:
return GetMaterialApp( title: 'Named navigation', // 新增key参数,指定唯一标识,避免Key冲突 unknownRoute: GetPage(name: '/notfound', page: () => UnknownRoutePage(), key: const ValueKey('unknown_route')), initialRoute: '/', getPages: [ GetPage(name: '/', page: () => MyNavigationNamed()), GetPage(name: '/second', page: () => SecondScreenNamed()), GetPage(name: '/third', page: () => ThirdParametersScreenNamed()), GetPage( name: '/third_with_built_param/:someValue', page: () => ThirdParametersScreenNamed()), ], );
- 升级GetX到稳定的高版本,修改pubspec.yaml中get的依赖版本为最新稳定版即可,例如:
dependencies: get: ^4.6.5
修改后执行flutter pub get拉取新版本依赖。
3. 执行flutter clean清除项目编译缓存,冷启动项目重新测试,不要使用热重载验证路由配置。
内容的提问来源于stack exchange,提问作者RJB
相关产品推荐
相关产品推荐

