Fed*_*zza 5 android state flutter bloc
我正在开发一个 Flutter 应用程序,我遇到了标题提到的问题。
BLoC 管理具有人员模型属性的表单的行为。
所以我的状态类看起来像这样。
class SynchronizedForm extends Equatable {
final PersonModel savedModel;
final PersonModel actualModel;
SynchronizedForm(this.savedModel, this.actualModel);
}
Run Code Online (Sandbox Code Playgroud)
注意:PersonModel 还扩展了 Equatable。
我向 BLoC 添加了一个简单委托,只是为了让我知道应用程序运行期间到底发生了什么。
委托打印所有状态转换。
实际模型的属性通过事件(BLoC 模式)进行更新。
class PersonBloc extends Bloc<PersonEvent, PersonState> {
PersonModel person;
PersonBloc (PersonModel person);
@override
PersonState get initialState => SynchronizedForm (person, person.copyWith());
@override
Stream<PersonState> mapEventToState(
PersonEvent event) async* {
if (event is ModifyPerson)
yield* _modifyPerson();
else if ...
}
Stream<PersonState> _modifyPerson(
ModifyPerson event) async* {
PersonModel actual = state.actualModel;
actual.prop = event.value;
yield SynchronizedForm (
state.savedModel,
actual);
}
}
Run Code Online (Sandbox Code Playgroud)
所以主要问题是我的屏幕中有一些小部件会消耗此状态更改,但是当实际状态是 SynchronizedForm 并且我修改了 person 时,我再次返回 SynchronizedForm。这里没有明确的转换,但我需要一个。
我尝试不用 Equatable,用 Equatable。使用 BlocConsumer、BlocListener(所有这些都来自 flutter_bloc 包)。我不知道还要做什么。
我希望你明白我想做什么。谢谢你们!
归档时间: |
|
查看次数: |
3842 次 |
最近记录: |