首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BlocListener未在Cubit函数调用后执行

BlocListener未在Cubit函数调用后执行
EN

Stack Overflow用户
提问于 2021-06-22 10:24:03
回答 1查看 878关注 0票数 1

所以,我有一个可以发布一些数据的函数。我有三种状态,DataLoadingDataErrorDataLoaded

当用户点击一个按钮时,我会调用这个函数。在那之后,我有一个BlocListener等待,直到小熊发射出DataLoaded状态。问题是侦听器正在对状态变化作出反应。

代码语言:javascript
复制
Button(
  text: 'Add',
  onTap: () {
    final data = _textController.text;
    
    context.read<PostDataCubit>().post(data);

    BlocListener<PostDataCubit, PostDataState>(
      listener: (context, state) {
        if (state is DataLoaded) {
          // navigate to another route
        } else if (state is DataError) {
          // show error
        }
      },
    );
  }
),

我尝试过在await调用read()时使用它,但这不起作用。我对这里的状态变化有什么反应?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-22 10:50:27

这个BlocListener没有监听,因为您在函数中添加了监听器,而不是在小部件树中添加它。将您的按钮包装在BlocConsumer小部件中,它将正常工作。查看下面的代码。

代码语言:javascript
复制
BlocListener<PostDataCubit, PostDataState>(
  listener: (context, state) {
     if (state is DataLoaded) {
          // navigate to another route
      } else if (state is DataError) {
           // show error
       }
    },
   builder: (context, state) {
     return Button(
        text: 'Add',
         onTap: () {
           final data = _textController.text;

            context.read<PostDataCubit>().post(data);
        });
      },
 ),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68081842

复制
相关文章

相似问题

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