AsyncFinal<T> constructor

const AsyncFinal<T>({
  1. Object? name,
  2. required Equal<Future<T>> equal,
  3. ExposeValue<T>? expose,
  4. DisposeValue<T>? dispose,
})

Assign an instance asynchronously and exposing it in current scope.

So:

final rootScope = await Scope.root([
  AsyncFinal<Repository>(
    name: 'repository',
    equal: (scope) async {
      return await createRepositoryAsync();
    },
  ),
]);

Simulates:

void rootScope() async {
  final repository = await createRepositoryAsync();
}

Use expose parameter to override default exposing behavior. Use dispose parameter to register dispose logic.

Implementation

const AsyncFinal({
  Object? name,
  required Equal<Future<T>> equal,
  ExposeValue<T>? expose,
  DisposeValue<T>? dispose,
}): _name = name,
  _equal = equal,
  _expose = expose,
  _dispose = dispose;