我的主要路线如下
routes: {
'/sign-in': (context) => BlocProvider(
lazy: false,
create: (_) => AuthCubit(),
child: const LandingPage(),
),
'/home': (context) => const HomeLandingPage(),
'/sign-up': (context) => const SignUpLandingPage(),
'/language-selection': (context) => const SelectionLanguageScreen(),
'/camera-page': (context) => CameraPage(),
'/web-add-page': (context) => const WebAddPage()
},
我在实现到WebAddPage()
的路由时遇到了问题,因为WebAddPage()
是一个被威胁为屏幕的小部件。
final screens = [ //screens is a List<Widget>
const WebAddPage(),
const WebUpdateProducts(),
const WebUpdateCategories(),
const WebUpdateStores(),
const WebUpdateUsers()
];
我没有使用Navigator.push
,因为我没有改变到一个新的屏幕,我只是改变小部件。有没有一种方法来实现这个数组的路由系统。我还需要URL路径来匹配路由。Navigator.push
显然不起作用,还添加了路由的关键字,将List<Widget>
的类型更改为List<object>
,但由于我将屏幕实现为子屏幕,因此无法使用List<object>
,因为类型“Object”无法分配给参数类型“Widget?”
2条答案
按热度按时间dtcbnfnu1#
您可以查看包裹Flutter自动路由:https://pub.dev/packages/auto_route,可让您轻松围绕路由、嵌套路由架构和路径设置项目。
但是,如果您仍然希望继续使用您的架构,那么您不能在使用索引中动态更改的单页Widget时切换路由。
所以我的建议是使用autoroute,如果你需要重定向,也看看路线警卫。
lzfw57am2#
我想它能帮你