不再发出 Bloc 初始状态

Ham*_*med 7 flutter flutter-bloc

我有一个听另一个集团的集团。将flutter_bloc包更新为 后version 6.0.2,侦听器在初始状态下将不再调用。

class BlocA extends Bloc {
  final BlocB blocB = ...;

  ...

  blocA.blocB.listen((state) {
    DO SOMTTHING...
  });

  ...
}
Run Code Online (Sandbox Code Playgroud)

我找到了这个解决方案:

class BlocB extends Bloc<..., ...> with BehaviorSubjectBloc {
  ...
}

mixin BehaviorSubjectBloc<TEvent, TState> on Bloc<TEvent, TState> {
  @override
  StreamSubscription<TState> listen(
    void Function(TState state) onData, {
    Function onError,
    void Function() onDone,
    bool cancelOnError,
  }) {
    onData(this.state);

    return super.listen(
      onData,
      onError: onError,
      onDone: onDone,
      cancelOnError: cancelOnError,
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我想知道有没有更好的解决方案?

Rod*_*Rod 1

flutter_bloc 存储库中有一个关于它的问题:
https ://github.com/felangel/bloc/issues/1641

该问题已在待办事项列表中。
您可以修复您的 yaml 以强制使用以前的版本,使用单引号并删除“^”或任何其他符号。删除您的~/.pub-cache/...文件夹和pubspec.lock文件,flutter packages get再次运行并快乐。

请注意,pub-cache 文件夹在您的所有项目之间共享,因此您可以尝试仅删除其中的特定包。
您可以使用查看依赖项flutter packages pub deps来调查传递flutter_bloc依赖项并删除它们。