【发布时间】:2023-01-04 09:32:51
【问题描述】:
目前,我们正在构建一个应用程序来学习我公司的 Flutter 和 Bloc 模式。我们使用 MultiRepositoryProvider 作为主要小部件,并使用 GoRouter 进行路由。我的路线是这样的:
GoRoute(
path: '/game/:id',
builder: (context, state) => GameDetailScreen(),
),
在 MultiRepositoryProvider 中,孩子是 MultiBlocProvider 并且此屏幕的提供者是:
BlocProvider(
create: (BuildContext context) {
return GameDetailBloc(context.read<FirestoreRepo>());
},
),
BlocProvider 的create 函数返回BuildContext,但我不清楚如何让 GoRoute 状态将 url 参数 id 传递给 GameDetailBloc。
我们设法通过在创建GameDetailScreen 时在 GoRoute 的构建函数中设置游戏的id 来实现这一点。然后我们在 MultiBlocProvider 中删除了 BlocProvider ,然后在构建小部件时从 BuildContext 访问了 bloc,但它似乎不正确,我们正试图找到这个问题的“正确解决方案”。任何帮助是极大的赞赏。谢谢!
【问题讨论】:
-
我不明白整个问题。但据我所知,您想在 GameDetailBloc 中传递“id”参数并想知道如何访问它。您可以使用 GoRoute 的构建器状态来做到这一点。有点像这个
final id= state.params['id']!;。我希望这是你问的。