resolve method

Future<ResolvedPreference> resolve(
  1. PrefKey key
)

Resolves one preference by walking the source stack (highest first).

Implementation

Future<ResolvedPreference> resolve(PrefKey key) async {
  final remote = _readRemote(key);

  if (_readForcedSet().contains(key.name)) {
    return ResolvedPreference(
      key: key,
      value: remote ?? key.defaultValue as Object,
      source: .forced,
    );
  }

  final override = await _store.read(key);
  if (override != null) {
    return ResolvedPreference(key: key, value: override, source: .override);
  }

  if (remote != null) {
    return ResolvedPreference(key: key, value: remote, source: .remote);
  }

  return ResolvedPreference(
    key: key,
    value: key.defaultValue as Object,
    source: .local,
  );
}