所以,我有一个可以发布一些数据的函数。我有三种状态,DataLoading,DataError和DataLoaded。
当用户点击一个按钮时,我会调用这个函数。在那之后,我有一个BlocListener等待,直到小熊发射出DataLoaded状态。问题是侦听器正在对状态变化作出反应。
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()时使用它,但这不起作用。我对这里的状态变化有什么反应?谢谢。
发布于 2021-06-22 10:50:27
这个BlocListener没有监听,因为您在函数中添加了监听器,而不是在小部件树中添加它。将您的按钮包装在BlocConsumer小部件中,它将正常工作。查看下面的代码。
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);
});
},
),https://stackoverflow.com/questions/68081842
复制相似问题