bounty将在5天后过期。回答此问题可获得+50的声望奖励。Sunshine正在寻找此问题的最新答案。
我已经构建了一个应用程序,其中我使用flutter_bloc。我想使用go_router进行导航。但对于动态路由,我如何使用GoRouter refreshListener参数和flutter_bloc
GoRouter(
routes: [
GoRoute(
path: '/',
name: 'home',
pageBuilder: (context, state) => HomePage.page(),
),
GoRoute(
path: '/login',
name: 'login',
pageBuilder: (context, state) => LoginPage.page(),
),
],
redirect: (state) {
final isLoggedIn =
bloc.state.status == AuthenticationStatus.authenticated;
final isLoggingIn = state.location == '/login';
if (!isLoggingIn && !isLoggingIn) return '/login';
if (isLoggedIn && isLoggingIn) return "/";
return null;
},
refreshListenable:
);
4条答案
按热度按时间guz6ccqo1#
因为bloc也以流的形式返回状态,所以你可以直接使用它。
zhte4eai2#
对我来说,将changeNotifier与Bloc类混合并从事件中调用notififyListener()是有效的
这是我的集体课
这是GoRouter
yuvru6vn3#
也许你可以这样做:
代码来自this answer,希望你能理解。
mklgxw1f4#
检查一下这个example,go_router支持,因为最近的一个版本用一个Stream刷新,这将避免在你的代码中额外的 Package 。