问题描述
我们正在使用 bloc_pattern 2.5.1 包在Flutter应用程序中实现Bloc状态管理,但是,变量会继续存储数据,并且即使在屏幕上,bloc文件也不会静止被dispose of function处置,不知道发生了什么事。
离开与欧盟相关联的屏幕后,如何恢复值
import 'package:bloc_pattern/bloc_pattern.dart';
import 'package:rxdart/rxdart.dart';
import 'package:save_kids/models/child.dart';
import 'package:save_kids/models/parent.dart';
import 'package:save_kids/models/timer.dart';
import 'package:save_kids/services/repository.dart';
class EditChildProfileBloc extends BlocBase {
EditChildProfileBloc() {
_imageAvatar.sink.add(avatars[0]);
_timer.sink.add(timers[0]);
_isValidated.add(false);
}
Repository _repository = Repository<Child>(collection: 'children');
final _childName = BehaviorSubject<String>();
final _age = BehaviorSubject<String>();
final _imageAvatar = BehaviorSubject<String>();
final _timer = BehaviorSubject<Timer>();
final _isValidated = BehaviorSubject<bool>();
final _childId = BehaviorSubject<String>();
Function(String) get changeChildId => _childId.sink.add;
Function(String) get changeChildName => _childName.sink.add;
Function(Timer) get changeTimer => _timer.sink.add;
Function(String) get changeAge => _age.sink.add;
Function(String) get changeImageAvatar => _imageAvatar.sink.add;
Function(bool) get showProgressBar => _isValidated.sink.add;
Stream<String> get childId => _childId.stream;
Stream<String> get childName => _childName.stream;
Stream<String> get age => _age.stream;
Stream<String> get imageAvatar => _imageAvatar.stream;
Stream<Timer> get timer => _timer.stream;
Stream<bool> get validatedStatus => _isValidated.stream;
// Function(bool) get changeEditMode => _isEditMode.sink.add;
// Stream<bool> get editMode => _isEditMode.stream;
Stream<Parent> get parentSession => _repository.authSession;
bool validateSignInFields() {
if (_childName.value != null && _childName.value.isNotEmpty) {
return true;
} else {
return false;
}
}
Future<Child> setChild(String parentId,String type) async {
Child child = Child(
name: _childName.value,type: type,parentId: parentId,imagePath: _imageAvatar.value,age: _age.value,timer: _timer.value,);
_timer.sink.add(timers[0]);
return await _repository.setDocument(child,_childId.value);
}
@override
void dispose() async {
await _childName.drain();
_childName.close();
await _childId.drain();
_childId.close();
await _age.drain();
_age.close();
await _timer.drain();
_timer.close();
await _imageAvatar.drain();
_imageAvatar.close();
super.dispose();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)