Flutter-如何在没有RxDart的情况下从Stream <string>获取最后一个值?

时间:2019-01-22 13:59:23

标签: stream flutter

需要知道是否可以在不使用第三方库的情况下从Stream中获取最后一个值。

我尝试的第一种方法是,当我可以将值发送到'changeEmail'中的流时,可以将newValue存储在BLoC中的某个变量中。正确吗?

我尝试的第二种方法是添加一个侦听器,该侦听器也将执行与上述相同的工作,并且我需要将newValue存储在某个变量中。

我有SteamController:

final _emailController = StreamController<String>.broadcast();

有烦恼:

Stream<String> get email => _emailController.stream; // getting data from stream

get changeEmail => _emailController.sink.add; // sending data to stream

1 个答案:

答案 0 :(得分:0)

您的片段大部分是正确的。但是,您需要在 _emailController.sink.add

上提供电子邮件
final _emailController = StreamController<String>();

// Stream that will be called on the UI screen
Stream<String> get email => _emailController.stream;

fetchEmail() async {
  String email = // email that will be provided to your Stream
  _emailController.sink.add(email);
}

dispose() {
  _emailController.close();
}

这是我之前创建的一个 sample,它在不使用 rxdart 的情况下实现了 BLoC。