在Flutter中使用auto_route包具有通往同一页面的多条路径



是否有一种方法有几个路径指向同一页面?

给出一些背景:我有一个flutter应用程序,通过Bloc事件处理屏幕。主屏幕可以有多个事件,每个事件显示一个特定的页面。因此,需要有多个路径指向同一个屏幕。

下面是我如何尝试设置路由的一个例子。Build it not work.

@MaterialAutoRouter(
routes: <AutoRoute>[
AutoRoute(path: '/routeA', page: HomeScreen),
AutoRoute(path: '/routeB', page: HomeScreen),
AutoRoute(path: '/routeC', page: HomeScreen),
AutoRoute(path: '/routeD', page: HomeScreen),
]
)

我的解决方案是创建指向同一个小部件的不同类。

在你的例子中,如果你有'HomeScreen'类,你想创建指向它的类

class HomeScreenRouteTwo extends StatelessWidget {
const HomeScreenRouteTwo({
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return HomeScreen('specificData');
}
}
class HomeScreenRouteThree extends StatelessWidget {
const HomeScreenRouteThree({
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return HomeScreen('specificData');
}
}

在你的路由器

@MaterialAutoRouter(
routes: <AutoRoute>[
AutoRoute(path: 'routeA', page: HomeScreenRouteTwo),
AutoRoute(path: 'routeB', page: HomeScreenRouteThree),
... etc
]
)

这将对指向您所构建的相同小部件的不同路径产生相同的效果,但使您能够根据发送用户到的路径发送不同的信息。

主屏幕可以有多个事件,每个事件显示一个特定的页面。因此,需要有多个路径指向同一个屏幕。

如果主页有多个事件,处理用户在主页中看到的

event 1
show user picture of a cat
event 2
show user picture of a dog.

相关内容

  • 没有找到相关文章

最新更新