首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter BLoC Provider查询

Flutter BLoC Provider查询
EN

Stack Overflow用户
提问于 2020-01-12 05:36:38
回答 1查看 470关注 0票数 0

我最近开始使用Flutter中的BLoC模式,正在努力理解BLoC提供商的一个问题。我的类看起来像这样

代码语言:javascript
复制
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;
  }
}

现在,我读过的大多数文章都说要将提供者添加到Material应用程序上方的小部件树中

代码语言:javascript
复制
return LoginBlocProvider(
    child: MaterialApp(...)
)

我的问题是,如果你有一个具有大量屏幕的复杂应用程序,会发生什么情况。看起来事情很快就会变得一团糟

代码语言:javascript
复制
return LoginBlocProvider(
  child: AccountBlocProvider(
    child: ScreenOne(
      child: ScreenTwo(
        child: ScreenThree(
          ...
        )
      )
    )
  )
)

有没有更有效的方法来管理它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-12 06:54:06

This page解释了如何避免在应用程序开始时提供所有块的可读性问题。有一个名为MultiBlocProvider的小部件,它接受提供者小部件的列表。

所以它看起来像这样:

代码语言:javascript
复制
return MultiBlocProvider(
  providers: [
    BlocProvider<LoginBloc>(
      create: (BuildContext context) => LoginBloc(),
    ),
    BlocProvider<AccountBloc>(
      create: (BuildContext context) => AccountBloc(),
    ),
    BlocProvider<PageOneBloc>(
      create: (BuildContext context) => PageOneBloc(),
    ),
  ],
  child: MaterialApp(...)
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59698846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档