flutter - 在Dart中关闭流后可以重新打开流吗

标签 flutter dart rxjs rx-java rxdart

在我的Flutter应用程序中,我使用BehaviorSubject()收听电子邮件文本字段。
当用户成功登录后,我调用了dispose函数将其关闭以避免内存泄漏。
如果用户注销并尝试再次登录,我可以重新打开流吗?

final _emailStream = BehaviorSubject<String>.seeded("");
final validateEmail = StreamTransformer<String, String>.fromHandlers(handleData: (email, sink) {
    var isEmailValid = RegExp(
            r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
        .hasMatch(email);
    isEmailValid ? sink.add(email) : sink.addError("Enter a valid Email");
  });
Stream<String> get email => _emailStream.stream.transform(validateEmail);
void updateEmail(String email) => _emailStream.sink.add(email);
void dispose() {
    _emailStream.close();
    
  }

最佳答案

我很确定您无法重新打开视频流。
但是,在当前项目中,我在构建登录类时打开流。因此,当我登录时,我将处置流,而当我注销时,将重新构建包含我的流的块,并重新创建新的流。
可能不是最好的方法,但是对我有用!
Log out
Building formbloc containing my streams

关于flutter - 在Dart中关闭流后可以重新打开流吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64101914/

相关文章:

android - flutter build apk错误

flutter - 用于空值的空检查运算符

angular - 有没有办法在不分配的情况下取消订阅BehaviorSubject?

dart - Flutter的Text()小部件中的TextAllCaps?

android - flutter - 错误 : Null safety features are disabled for this library

angular - 如何正确使用 RxJS 为返回到 Observable 的数组的每个对象添加一个新字段?

reactjs - 将 React 值从子级传递给父级

flutter - 如何在带有滚动的列中使用FractionallySizedBox?

string - Flutter/Dart 中单引号和双引号的区别

dart - 如何将非字符串数据传递给 Flutter 中的命名路由?