1

我正在通过构建应用程序来学习颤振。我已经实现BLoC pattern了调用 rest api 并向小部件提供数据。但是根据我的理解,这是需要它的视图的一些数据。我想Settings在大多数小部件上都有按钮,我可以在其中显示当前登录的用户信息,能够更改他的语言、主题、一些特定的选定数据等。基本上是应用程序的基本状态。是BLoC pattern那种方法吗?或者有更好的方法吗?

如果是,有什么方法可以做到这一点。如何处理多个StreamBuilder,例如一个用于从 api 接收数据,一个用于更新状态?

我知道我可以用单例类做虚拟并使用注册它get-it plugin,但如果有更好的方法我会跳过这个。

4

2 回答 2

1

Google 对管理状态的建议是使用Provider Package。但始终取决于您需要做什么。

Provider 的作者发布了一个更好的 provider,叫做Riverpod。但我认为还没有准备好投入生产。

于 2021-01-29T11:31:33.930 回答
0

如果有人遇到我已经用flutter_bloc插件做到了。BlocProviderprovider@Fer Buero Trebino 提到的包之上工作

class ApplicationStateBloc extends Cubit<ApplicationState> {
  ApplicationStateBloc() : super(new ApplicationState());

  void updateWhatEver(Whatever whatever) {
    state.whatever = whatever;
    emit(state);
  }

  ApplicationState getCurrentState() => state;
}

然后为了不处理没有提供者和东西的上下文,在应用程序加载时注册它

void main() {
  setup();
  runApp(
    MultiBlocProvider(
        providers: [
          BlocProvider(
            create: (context) => ApplicationStateBloc()
          )
        ],
        child: App())
  );
}

然后访问每个小部件中的状态很简单

BlocProvider.of<ApplicationStateBloc>(context).getCurrentState()

不确定是否符合最佳实践,我愿意发表评论,但现在它有效。

于 2021-01-29T13:47:57.057 回答