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

h22fl7wq  于 2022-12-24  发布在  Flutter
关注(0)|答案(2)|浏览(155)

我有一个保存字符串值的流,我想得到那个字符串的最后一个值,最好的方法是什么?

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);
          }
        },
      ),
    );
  }
holgip5t

holgip5t1#

从此处获取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.

BehaviorSubject是一个对象rxDart包。它的工作原理类似于StreamController,默认情况下broadcast()是打开的,BehaviorSubject比StreamController具有更多的功能。

0lvr5msh

0lvr5msh2#

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.first.then((value){_lastValue = value; });

rxDart使用异步方法。所以现在有同步方法来获得它。方法首先进行自动取消订阅,并在值准备好时执行回调函数。

相关问题