Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在有状态小部件上处理函数不';t执行与该集团相关的排放代码_Flutter_Bloc_Statefulwidget - Fatal编程技术网

Flutter 在有状态小部件上处理函数不';t执行与该集团相关的排放代码

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/

我们正在使用包来实现颤振应用程序中的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/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();
}
}