小编use*_*471的帖子

发出新状态时 Cubit 不会重建

每当我调用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)

dart flutter bloc flutter-bloc

1
推荐指数
1
解决办法
4793
查看次数

标签 统计

bloc ×1

dart ×1

flutter ×1

flutter-bloc ×1