Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 我如何倾听我的集团流中的变化_Flutter_Bloc_Stream Builder - Fatal编程技术网

Flutter 我如何倾听我的集团流中的变化

Flutter 我如何倾听我的集团流中的变化,flutter,bloc,stream-builder,Flutter,Bloc,Stream Builder,我是个新手,正在尝试使用Bloc架构构建一个应用程序 我可以通过输入我的eventbloc.updateNavigation(_selectedItem.value)找到一个接收器。我还通过调用我的bloc(就是它的名称)了解了如何使用这些数据。我有一个TextFormField并更改了一些设置,如if(bloc.navigationProvider.currentNavigation==1),if(bloc.navigationProvider.currentNavigation==2) 但有

我是个新手,正在尝试使用Bloc架构构建一个应用程序

我可以通过输入我的event
bloc.updateNavigation(_selectedItem.value)找到一个接收器。我还通过调用我的bloc(就是它的名称)了解了如何使用这些数据。我有一个TextFormField并更改了一些设置,如if(bloc.navigationProvider.currentNavigation==1)
if(bloc.navigationProvider.currentNavigation==2)

但有一件事我不知道该怎么做。我想设置
\u Controller.clear()无论何时集团发生变化。因此,每当用户做出新选择并更改“currentNavigation”时,文本控制器就会清除。有没有一种方法可以让我知道什么时候进行了更改,而不必通过更改来调用。如果(对currentNavigation进行了更改){u 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();

流有一个
.listen(..)
方法,每次数据传入流时都会调用该方法


为了更好地使用,请使用该软件包。它提供了向所有子体提供一个bloc的小部件(BlocProvider)和侦听状态更改的小部件(BlocListener)。在这里,您根本不必处理流,还有一些插件可以帮助创建样板代码。

问题是,我实际上对传递到流中的数据不感兴趣,而只是对传递到流中的数据感兴趣。我不需要这些数据,我只想说,在传递数据时,清除控制器。Flatter_bloc软件包看起来很有趣,可能是处理我一直在处理的问题的更好方法,但目前看来,更新我所有的bloc以使用该包似乎仍然是一项艰巨的任务。您可以忽略listen方法中的数据并将其清除:)没有单独的方法在每次更新流时触发