evaluateResult method

_EvaluatorResult<T> evaluateResult(
  1. RecoilOptions<T> recoilOptions
)

Implementation

_EvaluatorResult<T> evaluateResult(RecoilOptions<T> recoilOptions) {
  final dependencies = List<String>.empty(growable: true);
  late Function(RecoilOptions) getRecoilState;

  getRecoilState = (options) {
    final result = options is Selector<T>
        ? options.getValue(getRecoilState)
        : getModelValue(options as Atom<T>);

    if (options is Atom) dependencies.add(options.key);

    return (recoilOptions is Selector && options is Atom)
        ? (result as ValueNotifier<T>).value
        : result;
  };

  final currentValue = getRecoilState(recoilOptions);

  return _EvaluatorResult(currentValue, dependencies);
}