要解决BLoC在产生新状态后,BlocBuilder()没有更新的问题,可以尝试以下解决方法:
class MyBloc extends Bloc {
final _controller = StreamController();
@override
Stream get stream => _controller.stream;
@override
void dispose() {
_controller.close();
super.dispose();
}
@override
Stream mapEventToState(MyEvent event) async* {
if (event is MyEvent) {
// 处理事件并生成新状态
MyState newState = MyState();
// 发送新状态
_controller.add(newState);
// 返回新状态
yield newState;
}
}
}
BlocBuilder(
builder: (context, state) {
// 使用新状态更新UI
return Text(state.data);
},
),
class MyState {
final String data;
MyState(this.data);
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is MyState && runtimeType == other.runtimeType && data == other.data;
@override
int get hashCode => data.hashCode;
}
通过实施上述解决方法,你应该能够解决BLoC在产生新状态后,BlocBuilder()没有更新的问题。