gpt4 book ai didi

android - 如何监听状态属性变化 Flutter bloc 模式

转载 作者:行者123 更新时间:2023-12-05 00:05:14 26 4
gpt4 key购买 nike

我正在开发一个 Flutter 应用程序,我遇到了标题提到的问题。

BLoC 使用人员模型的属性管理表单的行为。

所以我的状态类看起来像这样。

class SynchronizedForm extends Equatable {

final PersonModel savedModel;

final PersonModel actualModel;

SynchronizedForm(this.savedModel, this.actualModel);

}

备注 :PersonModel 也扩展了 Equatable。

我已经向 BLoC 添加了一个简单委托(delegate),只是为了让我知道在应用程序运行期间到底发生了什么。

委托(delegate)打印所有状态转换。

actualModel 的属性通过事件(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);
}
}

所以主要问题是我的屏幕中有小部件消耗这种状态变化,但是当实际状态是 SynchronizedForm 并且我修改了我再次返回 SynchronizedForm 的人时。这里没有明确的过渡,但我需要一个。

我在没有 Equatable 的情况下尝试过,使用 Equatable。使用 BlocConsumer、BlocListener(所有这些都来自 flutter_bloc 包)。我不知道还能做什么。

我希望你明白我想要做什么。谢谢你们!

最佳答案

据我了解,即使您正在传递相同的状态,您也想基本上重建状态。为此,您需要创建状态属性的新副本,以便它捕获更改。

更多信息在这里:
https://bloclibrary.dev/#/faqs

关于android - 如何监听状态属性变化 Flutter bloc 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60498386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com