get<T> method

T get<T>(
  1. ScopedRef<T> ref
)

Retrieves a value from itself or from its parent

Implementation

T get<T>(ScopedRef<T> ref) {
  if (_values.containsKey(ref)) {
    return _values[ref] as T;
  }

  final T value;
  if (_overrides.containsKey(ref)) {
    value = _overrides[ref]!.create(this) as T;
  } else {
    for (final p in parents()) {
      if (p._values.containsKey(ref) || p._overrides.containsKey(ref)) {
        return p.get(ref);
      }
    }
    value = ref.create(this);
  }
  _values[ref] = value;
  if (ref.isGlobal) {
    for (final p in parents()) {
      p._values[ref] = value;
    }
  }
  return value;
}