watch<T> method

void watch<T>(
  1. String name,
  2. dynamic callback(
    1. T? value
    )
)

Implementation

void watch<T>(String name, Function(T? value) callback) {
  if (!_watchers.containsKey(name)) {
    _watchers[name] = [];
  }

  void adaptedCallback(dynamic value) {
    try {
      T? typedValue;
      if (value == null) {
        typedValue = null;
      } else if (value is T) {
        typedValue = value;
      } else {
        typedValue = value as T?;
      }
      callback(typedValue);
    } catch (e) {
      callback(null);
    }
  }

  _watchers[name]?.add(adaptedCallback);
}