syncWith method
DisposeHandler
syncWith(
- ChangeNotifier notifier,
- ValueChanged<
T> onChanged, { - required T getValue(),
- required void setValue(
- T
将 Stream 与 ChangeNotifier 同步
notifier
监听器
onChanged
值改变时的回调
getValue
获取当前值的方法
setValue
设置新值的方法
Implementation
DisposeHandler syncWith(
ChangeNotifier notifier,
ValueChanged<T> onChanged, {
required T Function() getValue,
required void Function(T) setValue,
}) {
// 使用 distinct() 避免重复值触发更新
final subscription = distinct().listen((newValue) {
// 只有当值真正改变时才更新
if (getValue() != newValue) {
setValue(newValue);
}
});
// 监听器回调
void listener() {
try {
onChanged(getValue());
} catch (error, stackTrace) {
RxLogger.logError(error, stackTrace);
}
}
notifier.addListener(listener);
// 返回取消监听的方法
return () {
try {
notifier.removeListener(listener);
subscription.cancel();
} catch (error, stackTrace) {
RxLogger.logError(error, stackTrace);
}
};
}