问题描述: 当使用BlocBuilder构建UI时,当cubit发出一个新的状态时,UI没有更新。
解决方法:
BlocProvider(
create: (BuildContext context) => MyCubit(),
child: BlocBuilder(
builder: (BuildContext context, MyState state) {
// UI代码
},
),
)
class MyCubit extends Cubit {
MyCubit() : super(MyInitialState());
void fetchData() {
// 发出一个新的状态
emit(MyLoadingState());
// 执行异步操作
// ...
// 异步操作完成后,发出另一个新的状态
emit(MyLoadedState(data));
}
}
BlocBuilder(
builder: (BuildContext context, MyState state) {
if (state is MyLoadingState) {
// 显示加载中状态
return CircularProgressIndicator();
} else if (state is MyLoadedState) {
// 显示加载完成状态
return Text(state.data.toString());
} else {
// 显示初始状态
return Text('Initial State');
}
},
)
通过以上的步骤,应该能够解决BlocBuilder在cubit发出后没有更新的问题。如果问题仍然存在,请检查日志以查看是否有其他错误。