问题描述
我是新手,正在尝试使用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)。在那里,您完全不必弄乱流,并且有一些插件可以帮助创建样板代码。