首页 > 解决方案 > Bloc 到 Bloc 通信 Mutibloc 提供程序

问题描述

我正在使用 flutter_bloc 并且我需要一个 bloc与另一个 bloc通信- 我有一个 activityBloc 需要监听 authBloc 以确定作者是否经过身份验证并获取用户 ID(目的是开始监听 firestore 上的文档更改基于来自身份验证的用户 ID)。

我通过构造函数将依赖对象传递给activityBloc。

class ActivityBloc extends Bloc<ActivityEvent, ActivityState> {
  final AuthBloc authBloc;
  final ActivityRepository repo;
  StreamSubscription authSubscription;
  StreamSubscription activitySubscription;
  String id; // userid
  int limit = 10;

  ActivityBloc({this.authBloc, this.repo}) {
    id = "";

    authSubscription = authBloc.listen((state) {
      if (state is AuthenticatedState) {
        id = state.user.uid;
        ...
          });
        });
      }
    });
  }

  @override
  ActivityState get initialState => ActivityInitial();
...
}

我需要在 multibloc 提供程序中公开这些,我如何能够在需要将一个 bloc 传递到另一个 bloc 的 multibloc 提供程序中实例化这些 bloc?

谢谢

标签: flutterflutter-bloc

解决方案


您可以按照以下方式将一个集团的实例用于另一个集团。

return MultiBlocProvider(
  providers: [
    BlocProvider<AuthBloc>(
      create: (BuildContext context) => AuthBloc(),
    ),
    BlocProvider<ActivityBloc>(
      create: (BuildContext context) => ActivityBloc(
        authBloc: BlocProvider.of<AuthBloc>(context),
        repo: /// instance of your activity repository,
      ),
    ),
  ],
  child: App(),
);

推荐阅读