Ank*_*ash 5 stream flutter bloc
需要知道我是否可以在不使用第三方库的情况下从 Stream 获取最后一个值。
首先?我尝试的方式是,当我可以将值发送到“changeEmail”中的流时,我可以将 newValue 存储在我的 BLoC 中的某个变量中。这是正确的吗?
我尝试的第二种方法是添加一个监听器,它也可以完成与上面相同的工作,我需要将 newValue 存储在某个变量中。
我有 SteamController:
final _emailController = StreamController<String>.broadcast();
有 gitter:
Stream<String> get email => _emailController.stream; // getting data from stream
get changeEmail => _emailController.sink.add; // sending data to stream
你不能直接这样做。要从流中获取最后一个值,您需要首先完成流或缓存添加到流中的每个最后一个值。
//close the stream and get last value:
streamController1 = new StreamController();
streamController1.add("val1");
streamController1.add("val2");
streamController1.add("val3");
streamController1.close();
streamController1.stream.last.then((value) => print(value)); //output: val3
//caching the added values:
streamController1 = new StreamController.broadcast();
String lastValue;
streamController1.stream.listen((value) {
lastValue = value;
});
streamController1.add("val1");
streamController1.add("val2");
streamController1.add("val3");
Future.delayed(Duration(milliseconds: 500), ()=> print(lastValue)); //output: val3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1753 次 |
| 最近记录: |