Flutter 在有状态小部件上处理函数不';t执行与该集团相关的排放代码
我们正在使用包来实现颤振应用程序中的Bloc状态管理,但是,变量一直在存储数据,Bloc文件不会停止,即使屏幕被处理,也不知道发生了什么 如何在我离开与bloc链接的屏幕后保留这些值Flutter 在有状态小部件上处理函数不';t执行与该集团相关的排放代码,flutter,bloc,statefulwidget,Flutter,Bloc,Statefulwidget,我们正在使用包来实现颤振应用程序中的Bloc状态管理,但是,变量一直在存储数据,Bloc文件不会停止,即使屏幕被处理,也不知道发生了什么 如何在我离开与bloc链接的屏幕后保留这些值 import 'package:bloc_pattern/bloc_pattern.dart'; import 'package:rxdart/rxdart.dart'; import 'package:save_kids/models/child.dart'; import 'package:save_kids/
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();
}
}
import'package:bloc_pattern/bloc_pattern.dart';
导入“包:rxdart/rxdart.dart”;
导入“package:save_kids/models/child.dart”;
导入“package:save_kids/models/parent.dart”;
导入“package:save_kids/models/timer.dart”;
导入“package:save_kids/services/repository.dart”;
类EditChildProfileBloc扩展BlocBase{
EditChildProfileBloc(){
_imageAvatar.sink.add(化身[0]);
_timer.sink.add(timers[0]);
_isValidated.add(false);
}
Repository _Repository=Repository(集合:'children');
final _childName=BehaviorSubject();
最终年龄=行为主体();
最终_imageAvatar=行为主体();
final _timer=BehaviorSubject();
最终_isValidated=行为主体();
final _childId=行为主体();
函数(字符串)get changeChildId=>\u childId.sink.add;
函数(字符串)get changeChildName=>\u childName.sink.add;
函数(Timer)get changeTimer=>\u Timer.sink.add;
函数(字符串)get changeAge=>\u age.sink.add;
函数(字符串)get changeImageAvatar=>\u imageAvatar.sink.add;
函数(bool)get showProgressBar=>\u isValidated.sink.add;
Stream get childId=>\u childId.Stream;
Stream get childName=>\u childName.Stream;
Stream get age=>\u age.Stream;
Stream get imageAvatar=>\u imageAvatar.Stream;
Stream get timer=>\u timer.Stream;
Stream get validatedStatus=>\u isValidated.Stream;
//函数(bool)get changeEditMode=>\u isEditMode.sink.add;
//Stream get editMode=>\u isEditMode.Stream;
Stream get parentSession=>\u repository.authSession;
bool validatesignifelds(){
if(_childName.value!=null&&u childName.value.isNotEmpty){
返回true;
}否则{
返回false;
}
}
Future setChild(字符串parentId,字符串类型)异步{
孩子(
名称:_childName.value,
类型:类型,
parentId:parentId,
imagePath:_imageAvatar.value,
年龄:_age.value,
计时器:_timer.value,
);
_timer.sink.add(timers[0]);
返回wait _repository.setDocument(child,_childId.value);
}
@凌驾
void dispose()异步{
wait_childName.drain();
_childName.close();
等待childId.drain();
_childId.close();
等待年龄。排水管();
_年龄。接近();
wait_timer.drain();
_timer.close();
等待_imageAvatar.drain();
_imageAvatar.close();
super.dispose();
}
}