如何使用 rxdart 获取 Stream<String> 中的最后一个值?
Posted
技术标签:
【中文标题】如何使用 rxdart 获取 Stream<String> 中的最后一个值?【英文标题】:how to get last value in a Stream<String> using rxdart? 【发布时间】:2019-06-26 18:26:48 【问题描述】:我有一个包含字符串值的流,我想获取该字符串中的最后一个值。最好的方法是什么?
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);
,
),
);
【问题讨论】:
您可能正在寻找BehaviourSubject
。 pub.dartlang.org/documentation/rxdart/latest/rx/…
【参考方案1】:
从这里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 具有更多功能。
【讨论】:
如果有人遇到同样的问题:rxdart 包中似乎有一个重大变化,您不能再在 BehaviorSubject 上直接使用 .value 了。您将不得不使用“_searchController.valueWrapper.value”以上是关于如何使用 rxdart 获取 Stream<String> 中的最后一个值?的主要内容,如果未能解决你的问题,请参考以下文章
Rxdart combinelaststream 功能不起作用