bindValueNotifier<T, V> function

NotifierBinding<T> bindValueNotifier<T, V>({
  1. required Binding<T> binding,
  2. required ValueNotifier<V> valueNotifier,
  3. V covertToValue(
    1. T
    )?,
  4. T valueCovertTo(
    1. V
    )?,
})

Implementation

NotifierBinding<T> bindValueNotifier<T, V>({
  required Binding<T> binding,
  required ValueNotifier<V> valueNotifier,
  V Function(T)? covertToValue,
  T Function(V)? valueCovertTo,
}) {
  covertToValue ??= (T t) => t as V;
  valueCovertTo ??= (V v) => v as T;

  return bindChangeNotifier<T>(
    binding: binding,
    changeNotifier: valueNotifier,
    notifyListener: () {
      var newValue = valueCovertTo!(valueNotifier.value);
      if (binding.value != newValue) {
        binding.notifyChange(newValue);
      }
    },
    onChange: () {
      try {
        valueNotifier.value = covertToValue!(binding.value);
      } catch(e) {
        //
      }
    },
  );
}