Рецепты

Общая асинхронная инициализация

Async Lazy Singleton для одного ресурса, совместно ожидаемого параллельными запросами.

v1.1.0Продвинутый уровеньark_di

Общая асинхронная инициализация

dart
binder.bindAsyncLazySingleton<Database>(
  (resolver) => Database.open(resolver.get<AppConfig>().databasePath),
  dispose: (database) => database.close(),
);

Параллельные вызовы getAsync<Database>() ожидают один выполняющийся Future. Успешный результат сохраняется, а неуспешная попытка очищается для повторного запроса. Асинхронная фабрика подходит, когда каждому вызывающему коду действительно нужен отдельный объект.