我以为Riverpod只会在状态值不同的情况下触发重建,但事实证明,每次设置状态时它都会重建,尽管值是相同的.这是真的吗?
具体情况如下
@Freezed(genericArgumentFactories: true)
class Model with _$Model {
const factory Model({required int id}) = _Model;
}
class Manager {
static StateProvider<Model> modelProvider =
StateProvider<Model>((ref) => Model(id: 1));
Manager() {
Stream.periodic(Duration(seconds: 1)).take(1000).listen((event) {
ref.read(modelProvider.notifier).update((state) {
var cloneState = state.copyWith();
print("${state == cloneState}"); //This print true
return cloneState;
});
});
}
}
class TestWidget extends ConsumerWidget {
const TestWidget();
@override
Widget build(BuildContext context, WidgetRef ref) {
var model = ref.watch(Manager.modelProvider);
print("model change......................"); //print every second
return Text(model.id.toString());
}
}
它显示TestWidget每秒钟重新构建一次,但我认为不应该这样,因为状态是一样的,尽管我再次设置了它. 我是不是遗漏了什么?谢谢.