我正在使用flutter_bloc
库来管理小部件的状态。我正在尝试更新处于List
状态的变量。当我捕获状态并修改所需的值,然后产生新状态时,状态不会更新,但是状态的克隆已更改。
Stream<ItemState> _updateRestrictions(ItemUpdateRestrictionValue event) async * {
if (state is ItemLoaded) {
final restrictions = (state as ItemLoaded).restrictions;
final newState = restrictions.map((restriction) {
if (restriction.id == event.restrictionId) {
return ItemRestriction(
id: restriction.id,
name: restriction.name,
restrictionType: restriction.restrictionType,
restrictionValues: restriction.restrictionValues,
restrictionValue: event.restrictionValueId
);
}
return restriction;
}).toList();
yield ItemLoaded(restrictions: newState);
}
}
我做错什么了吗?或如何正确使用flutter_bloc
更新状态?
答案 0 :(得分:2)
之所以可能发生这种情况,是因为您在Equatable
上使用了ItemState class
并产生了相同的状态IteamLoaded()
。
您可能想阅读本https://bloclibrary.dev/#/faqs?id=when-to-use-equatable