Bloc的初始状态不再发出

问题描述

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

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

  ...

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

  ...
}

我找到了这个解决方案:

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,);
  }
}

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

解决方法

在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依赖并将其删除。