每当我调用toggleLocked 事件时,BlocBuilder 都不会重建小部件。
我在互联网上查了很多资料,发现了这个解释:/sf/answers/4260843121/ 我认为在某个地方我错误地使用了 equatable 包,导致 BlocBuilder 认为没有任何改变(虽然是有)。
我已阅读 Bloc 库中的常见问题解答,并且提供的三个解决方案(可等同/不重用相同状态/使用 fromList 的道具)似乎无法解决问题。
我的肘:
class LockCubit extends Cubit<LockState> {
LockCubit({@required this.repository})
: assert(repository != null),
super(LockInitial());
final LocksRepository repository;
Future<void> fetch() async {
try {
final locks = await repository.fetchLocks();
emit(LocksDisplayed().copyWith(locks));
} on Exception {
emit(LockError());
}
}
Future<void> toggleLocked(int id) async {
try {
final locks = await repository.toggleLocked(id);
emit(LocksDisplayed().copyWith(List.from(locks)));
} on Exception {
emit(LockError());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的状态:
abstract class LockState extends Equatable {
const LockState(); …Run Code Online (Sandbox Code Playgroud)