如何聆听集团流中的变化

问题描述

我是新手,正在尝试使用Bloc架构构建应用。

我可以输入事件bloc.updateNavigation(_selectedItem.value);来找出一个接收器。我还弄清楚了如何通过调用我的块(即所谓的块)来使用这些数据。我有一个TextFormField并更改了诸如if (bloc.navigationProvider.currentNavigation == 1)if (bloc.navigationProvider.currentNavigation == 2)

这样的某些设置

有一件事我仍然不知道该怎么做。每当论坛更改时,我都想设置_Controller.clear();。这样,每当用户进行新选择并更改“ currentNavigation”时,文本控制器都会清除。有没有一种方法可以让我找出更改的时间,而不必要求更改。我想做类似if (change is made to currentNavigation) {_Controller.clear();}

的事情

我的bloc文件如下:

class NavigationBloc {
  final navigationController = StreamController();
  NavigationProvider navigationProvider = new NavigationProvider();

  Stream get getNavigation => navigationController.stream;

  void updateNavigation(int navigation) {
    navigationProvider.updateNavigation(navigation);
    navigationController.sink.add(navigationProvider.currentNavigation);
  }

  void dispose() {
    navigationController.close();
  }
}

final bloc = NavigationBloc();

解决方法

流有一个Inner方法,每次将数据传递到流中时都会调用该方法。

为获得更好的使用效果,请使用flutter_bloc软件包。它提供了为所有后代提供集团的窗口小部件(BlocProvider)和为侦听状态更改的窗口小部件(BlocListener)。在那里,您完全不必弄乱流,并且有一些插件可以帮助创建样板代码。