首先检查 BlocBuilder 或 BlocProvider 的代码实现是否正确,确保 BlocBase 状态管理的正确性。其次,可以尝试在 BlocConsumer 中添加 didChangeDependencies 方法,并在其中获取最新的状态值。示例如下:
BlocConsumer(
listener: (context, state) {
// do something when state changes...
},
builder: (context, state) {
return Text('$state');
},
// add didChangeDependencies
// to get latest state value
// when consumer widget rebuilds
didChangeDependencies: (context) {
final bloc = context.read();
final state = bloc.state;
// do something with state, e.g. log it
}
);
在上述代码示例中,通过给 BlocConsumer 加上 didChangeDependencies 方法,每当该 widget 重新 build 时都会获取最新的 bloc 状态并进行处理。