use*_*415 2 flutter flutter-bloc
我正在使用 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();
...
}
Run Code Online (Sandbox Code Playgroud)
我需要在 multibloc 提供程序中公开这些内容,如何在需要将一个 bloc 传递到另一个 bloc 的 mulitbloc 提供程序中实例化 bloc ?
谢谢
您可以按照以下步骤将一个 bloc 的实例用于另一个 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(),
);
Run Code Online (Sandbox Code Playgroud)
Phi*_*nko -2
您好,我不确定 flutter_bloc 库是否可行,但您可以使用很棒的提供程序库 https://pub.dev/packages/provider#-installing-tab - 它已获得 Google 批准(不仅适用于 bloc)
另外,flutter_bloc 也在使用 Provider
有 ProxyProvider,我不确定 flutter_bloc 库给你什么权限,因为你需要的一切都可以在没有它的情况下完成,对我来说,我只使用提供程序库
这里的代码可以解决您的问题,有关如何与提供商合作的更多信息,请查看https://pub.dev/packages/provider
MultiProvider(
providers: [
Provider<AuthBloc>(
create: (_) => AuthBloc(),
dispose: (_, bloc) => bloc.dispose(),
),
ProxyProvider<AuthBloc,ActivityBloc>(
create: (_) => ActivityBloc(),
update: (_, authBloc, bloc) => bloc..authBloc = authBloc, //insert authBloc to ActivityBloc
dispose: (_, bloc) => bloc.dispose(),
),
)
],
child: App(),
)
Run Code Online (Sandbox Code Playgroud)
然后访问应用程序小部件内的任何提供程序
@override Widget build(BuildContext context) {
final bloc = Provider.of<ActivityBloc>(context);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1908 次 |
| 最近记录: |