在BlocBuilder中使用EqualityComparer解决问题。
在BlocBuilder中使用EqualityComparer可以解决重新构建Widgets 的问题。EqualityComparers是用于比较两个对象是否相等的类。在BlocBuilder中,默认情况下是使用dart中的“==”操作符来比较两个状态是否相等的。但是,当在一个新的状态不会被视为与旧状态相等时,BlocBuilder就不会重新构建Widgets。因此,我们需要使用自己的EqualityComparer来确保BlocBuilder对新状态进行正确比较。
下面是一个使用EqualityComparers的示例,该示例会在每次state更改时重新构建Widgets:
BlocBuilder(
builder: (context, state) {
return YourWidget(
// Use a custom EqualityComparer to compare MyState instances.
// By default, BlocBuilder uses `==` to compare states.
// But we want to compare based on the value of 'data'.
data: state.data,
key: ValueKey(state),
// Use a custom equality comparer so that this widget will be rebuilt when
// `state` is changed. Otherwise, this widget won't be rebuilt even if the
// new state has a different value for `data`.
equalityComparer: (prev, curr) => prev.data == curr.data,
);
},
)