根据Dart / Flutter中的过滤器更新流
我有一个BLoC,它使用原始输入Stream
(产生JSON对象列表)并将其转换为使用的可用对象StreamTransformer
。UI将显示该列表。用户可以应用过滤器(本身就是流到BLoC中的流),以便BLoC用相应的where(...)
语句更新输入流转换器。
问题是:当过滤器更改时,UI不会更新,因为输出流取决于JSON输入流(而不是过滤器流)的事件。我的假设是,我需要创建自己的流,将输入事件和过滤器事件都转发到该流中,或者我需要在转换后的输入流上重复最后一个事件,以使转换器有机会拾取它。如何正确完成?一个例子会很有帮助!
回答:
您的假设是正确的。您需要创建第三个流,同时接收JSON流和过滤流,并将两者组合成自定义结果。
这通常是通过流转换器完成的。使用myStream.transform
方法。但这有点复杂。
为了使事情变得更加简单,有一个名为rxdart的软件包,该软件包基本上是子类,Stream
并添加了一些常见的转换器。
使用rxdart,您可以使用combineLatest
运算符创建第三个流
Observable<List<String>> list;Observable<String> filter;
final output = Observable.combineLatest2(filter, list, (String filter, List<String> list) {
return list.where((str) => str.startsWith(filter));
});
有关reactx运算符的更多信息,请点击此处
以上是 根据Dart / Flutter中的过滤器更新流 的全部内容, 来源链接: utcz.com/qa/420585.html