首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flutter_bloc无法找到正确的提供程序

flutter_bloc无法找到正确的提供程序
EN

Stack Overflow用户
提问于 2021-03-23 10:47:35
回答 1查看 661关注 0票数 0

我有一个Cubit从API中获取数据。我想把它连接到UI上,所以我首先在这个小部件上添加了一个BlocProvider。这给了我一个错误,所以我用BlocProvider包装了这个BlocProvider,这个BlocProvider也产生了同样的错误。在那之后,我试着让它绕着我想要访问的路线,得到同样的结果。

代码语言:javascript
复制
MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: getThemeData(),
      onGenerateRoute: _router.generateRoutes,
      initialRoute: _store.get('users', defaultValue: {}).isEmpty
          ? '/onboarding'
          : '/dashboard',
);

routes.dart

代码语言:javascript
复制
final PANCubit _panCubit = PANCubit(PANRepository());
  Route<dynamic> generateRoutes(RouteSettings settings) {
    switch (settings.name) {
      // case '/':
      //   return MaterialPageRoute(builder: (context) => Home());
      case '/':
      case '/onboarding':
        return MaterialPageRoute(
          builder: (context) => BlocProvider.value(
            value: _panCubit,
            child: OnBoarding(),
          ),
        );
...

我想在UI中访问它:

代码语言:javascript
复制
OnBoardingView(
  imagePath: process_svg,
  titleWidget: BlocBuilder(
    builder: (context, state) {
      context.read<PANCubit>().getPANInformation(_panText.text);

      if (state is PANLoading) {
        return CircularProgressIndicator();
      } else if (state is PANFetched) {
        return Text(
          'Hey ${state.panInformation.fullName}!',
          style: Theme.of(context).textTheme.headline1,
        );
      } else {
        return Text('Hmmm..Something went wrong.');
      }
    },
  ),
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-23 11:45:35

您需要精确确定要在BlocBuilder中访问哪个区块:

代码语言:javascript
复制
titleWidget: BlocBuilder<PANCubit, PANState>( // Replace PANState by the type of state
    builder: (context, state) {
      state.getPANInformation(_panText.text);

      if (state is PANLoading) {
        return CircularProgressIndicator();
      } else if (state is PANFetched) {
        return Text(
          'Hey ${state.panInformation.fullName}!',
          style: Theme.of(context).textTheme.headline1,
        );
      } else {
        return Text('Hmmm..Something went wrong.');
      }
    },
  ),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66761626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档