FlutterBloc 对 Blocs 的初始状态使用react

标签 flutter dart bloc flutter-provider flutter-bloc

我怎样才能让我的集团对集团的初始状态使用react。在示例中,我试图在集团初始状态上记录一些内容,但没有任何 react 。它只打印 blocs 构造函数,但不打印 facilityIntial 的打印语句


class FacilityBloc extends Bloc<FacilityEvent, FacilityState> {
  FacilityBloc(this.facilityRepository)
      : assert(facilityRepository != null),
        super(FacilityInitial()) {
    print('FacilitBlocConstructed');
  }

  final FacilityRepository facilityRepository;

  @override
  Stream<FacilityState> mapEventToState(
    FacilityEvent event,
  ) async* {
    print(event);
    if (event is FacilityGetAll) {
      yield* _mapGetAllFacilityToState(event);
    } else if (event is FacilityInitial) {
      print('Facility intial state');
    }
  }

  Stream<FacilityState> _mapGetAllFacilityToState(FacilityGetAll event) async* {
    yield FacilityLoading();
    try {
      List<Facility> facilities = await facilityRepository.loadAllFacility();
      yield FacilityLoaded(facilities);
    } on AppException catch (e) {
      yield FacilityError(e.exceptionMessageId);
    } catch (e) {
      yield FacilityError(LocaleKeys.generalError);
    }
  }
}

最佳答案

如果 FacilityInitial是一种状态,那么这就是您无法在 mapEventToState 中对其使用react的原因函数(在此函数中,您只能对事件使用react,而不是状态)。如果 mapEventToState是一个事件(我不能肯定地说,因为您没有提供该信息)它可能与同名的状态类冲突。
此外,您还没有提供创建 bloc 实例的代码。为了能够对事件使用react(即使是初始事件),您需要将此事件添加到 bloc。它可能看起来像这样:

BlocProvider<FacilityBloc>(
    lazy: false,
    create: (context) => FacilityBloc(FacilityRepository())..add(FacilityInitialEvent()),
  child: Text("My Text"),
)
在上面的示例中,我明确添加了 FacilityInitialEvent ,所以到集团能够处理它。另外,我稍微更改了事件名称,以避免名称冲突。

关于FlutterBloc 对 Blocs 的初始状态使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64602253/

相关文章:

server - Flutter:无需等待服务器响应即可处置 Bloc

android - 必须从Maven或自定义位置提供aapt2之一

flutter - 提供程序未更新UI

flutter - 将数据发送到新屏幕,但不知道如何设置

flutter - 使用用户 imageURL 及其名称为 flutter 中的谷歌地图构建自定义标记

android - 如何在 flutter 的 Markdown 中添加超链接到文本

flutter - Dart 方法未调用

flutter - 致命异常 : main, 启动应用程序/Flutter 时出错

flutter - 我需要有关如何保存应用状态的指南。

dart - flutter :未处理的异常:错误状态:调用关闭后无法添加新事件