【问题标题】:How do I access the url path params from GoRouter when using a MultiBlocProvider?使用 MultiBlocProvider 时如何从 GoRouter 访问 url 路径参数?
【发布时间】: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']!;。我希望这是你问的。

标签: flutter bloc gorouter


【解决方案1】:

Uri.base.toString().replaceAll(Uri.base.origin, '')

【讨论】:

    猜你喜欢
    • 2023-02-10
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    相关资源
    最近更新 更多