dart - 如何获取流中的最后一个值使用 rxdart?
问题描述
我有一个包含字符串值的流,我想获取该字符串中的最后一个值。最好的方法是什么?
Stream<String> get searchTextStream {
return _searchController.stream.transform(
StreamTransformer<String, String>.fromHandlers(
handleData: (value, sink) {
if (value.isEmpty || value.length < 4) {
sink.addError('please enter some text..');
} else {
sink.add(value);
}
},
),
);
}
解决方案
从这里https://pub.dartlang.org/packages/rxdart获取 rxDart 包。
import 'package:rxdart/rxdart.dart'; // 1. Import rxDart package.
final _searchController = BehaviorSubject<String>(); // 2. Initiate _searchController as BehaviorSubject in stead of StreamController.
String _lastValue = _searchController.value; // 3. Get the last value in the Stream.
BehaviorSubject 是一个 Object rxDart 包。它像 StreamController 一样工作,默认情况下,broadcast() 处于打开状态,并且 BehaviorSubject 比 StreamController 具有更多功能。
推荐阅读
- javascript - React 应用程序运行良好,但不能在移动浏览器上运行
- spring-integration - 成功通道发送 .msg 文件而不是 .csv 文件
- android - 如何在导航抽屉内集成可扩展列表视图?
- crashlytics-android - 上传和检查结构上的 DSYM (Crashlytics-Android)
- android - 在 RecyclerView 中加载更多问题
- android - 用于在两个 EditTexts 之间匹配文本内容的 Android Espresso 测试
- android - Firebase 用户配置文件中的配置文件图片未显示在真实设备上
- android - 从 C++ 访问 Android Settings.Secure
- java - Phaser 相位值转义
- android - 可绘制缩小不适用于另一个模块中声明的资产