Flutter 颤振群提供程序查询

Flutter 颤振群提供程序查询,flutter,dart,bloc,Flutter,Dart,Bloc,我最近开始在Flatter中使用BLoC模式,并且正在努力理解BLoC提供者的一个问题。我的班级看起来像这样 class LoginBlocProvider extends InheritedWidget { final LoginBloc bloc; LoginBlocProvider({Key key, Widget child}) : bloc = LoginBloc(), super(key: key, child: child); @over

我最近开始在Flatter中使用BLoC模式,并且正在努力理解BLoC提供者的一个问题。我的班级看起来像这样

class LoginBlocProvider extends InheritedWidget {
  final LoginBloc bloc;

  LoginBlocProvider({Key key, Widget child})
      : bloc = LoginBloc(),
        super(key: key, child: child);

  @override
  bool updateShouldNotify(InheritedWidget oldWidget) => true;

  static LoginBloc of(BuildContext context) {
    return context.dependOnInheritedWidgetOfExactType<LoginBlocProvider>().bloc;
  }
}
我的问题是,如果你有一个包含大量屏幕的复杂应用程序,会发生什么。看起来这会很快变得一团糟

return LoginBlocProvider(
  child: AccountBlocProvider(
    child: ScreenOne(
      child: ScreenTwo(
        child: ScreenThree(
          ...
        )
      )
    )
  )
)
有没有更有效的方法来管理这个问题?

解释了如何在应用程序开始时解决提供所有bloc的可读性问题。有一个名为MultiBlocProvider的小部件,它获取提供者小部件的列表

所以看起来是这样的:

return MultiBlocProvider(
  providers: [
    BlocProvider<LoginBloc>(
      create: (BuildContext context) => LoginBloc(),
    ),
    BlocProvider<AccountBloc>(
      create: (BuildContext context) => AccountBloc(),
    ),
    BlocProvider<PageOneBloc>(
      create: (BuildContext context) => PageOneBloc(),
    ),
  ],
  child: MaterialApp(...)
)
返回多blocProvider(
供应商:[
BlocProvider(
create:(BuildContext context)=>LoginBloc(),
),
BlocProvider(
create:(BuildContext context)=>AccountBloc(),
),
BlocProvider(
创建:(BuildContext context)=>PageOneBloc(),
),
],
子项:MaterialApp(…)
)

你好,克里斯!你能看看我关于集团的问题吗-
return MultiBlocProvider(
  providers: [
    BlocProvider<LoginBloc>(
      create: (BuildContext context) => LoginBloc(),
    ),
    BlocProvider<AccountBloc>(
      create: (BuildContext context) => AccountBloc(),
    ),
    BlocProvider<PageOneBloc>(
      create: (BuildContext context) => PageOneBloc(),
    ),
  ],
  child: MaterialApp(...)
)