我正在学习 Bloc,但在永久保存数据时遇到了一些麻烦。我有这个 TextFormField
它带有来自 API 的名称,如果我更新此名称,它应该保存并在其他屏幕中显示更新名称,例如配置文件屏幕和编辑配置文件屏幕,如下图所示。
在此处输入图像描述
问题是,我可以保存和更新名称,但是当我重新启动应用程序时,它会回到 API 中以前的名称,我希望永久保存此更新。
我怎样才能做到这一点?这是我的州课
class FormNameState extends Equatable {
final String nameForm;
//FormNameState({required this.nameForm, this.formSubmited});
FormNameState({required this.nameForm});
@override
List<Object?> get props => [nameForm];
Map<String, dynamic> toMap() {
return {
'nameForm': nameForm,
};
}
factory FormNameState.fromMap(Map<String, dynamic> map) {
return FormNameState(
nameForm: map['nameForm'],
);
}
String toJson() => json.encode(toMap());
factory FormNameState.fromJson(String source) =>
FormNameState.fromMap(json.decode(source));
}
事件类
abstract class FormNameEvent extends Equatable {
@override
List<Object> get props => [];
}
class UpdateName extends FormNameEvent {
final String nameForm;
UpdateName({required this.nameForm});
}
class FormNameWithTester extends FormNameEvent {}
集团类
class FormNameBloc extends HydratedBloc<FormNameEvent, FormNameState> {
FormNameBloc(this.loginBloc) : super(FormNameState(nameForm: ''));
final LoginBloc loginBloc;
@override
Stream<FormNameState> mapEventToState(FormNameEvent event) async* {
print(event);
if (event is UpdateName) {
yield* _mapUpdateName(event);
}
/* if (event is FormNameWithTester) {
yield* _mapUpda(event);
} */
//throw UnimplementedError('missingEvent');
}
Stream<FormNameState> _mapUpdateName(UpdateName event) async* {
event.nameForm;
loginBloc.add(FormEditionName(formName: event.nameForm));
print('eventString');
//yield state;
}
@override
FormNameState fromJson(Map<String, dynamic> json) {
return FormNameState.fromJson(json);
}
@override
Map<String, dynamic> toJson(FormNameState state) {
return state.toJson(state);
}
}