【问题标题】:Bloc initial state is not emitted anymore不再发出 Bloc 初始状态
【发布时间】:2020-12-09 18:08:32
【问题描述】:

我有一个听另一个集团的集团。将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,
    );
  }
}

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

【问题讨论】:

  • 你需要完成什么?从 BlocB 构造函数访问 blocA.state 并将其视为特殊情况不是解决方案吗?这是一个已知的重大更改(可悲),记录在(迁移页面](bloclibrary.dev/#/…) 上。

标签: flutter flutter-bloc


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 2021-02-10
  • 2020-02-21
  • 2021-02-22
  • 2021-02-12
  • 2022-01-21
  • 2021-02-01
  • 2022-10-06
  • 2021-01-07
  • 2022-01-11
相关资源
最近更新 更多