如何使用 rxdart 获取 Stream<String> 中的最后一个值?

Sal*_*ma. 9 stream dart flutter 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);
          }
        },
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

小智 16

从这里获取 rxDart 包https://pub.dartlang.org/packages/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.
Run Code Online (Sandbox Code Playgroud)

BehaviorSubject 是一个 Object rxDart 包。它的工作方式类似于 StreamController,默认情况下广播 () 是打开的,并且 BehaviorSubject 具有比 StreamController 更多的功能。