问题描述
在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();
}
解决方法
我很确定您无法重新打开视频流。
但是,在我当前的项目中,我在构建登录类时打开了流。因此,当我登录时,我将处置流,而当我注销时,将重新构建包含我的流的块,并重新创建新的流。
可能不是最好的方法,但是对我有用!