微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在Dart中关闭流后可以重新打开流吗

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。