Рецепты

Разрешение DataSource без неоднозначности

Неизменяемый DataSourceContainer и явные ошибки отсутствующих или дублирующихся контрактов.

v1.1.0Средний уровеньark_data_layer

Разрешение DataSource без неоднозначности

dart
final sources = DataSourceContainer(<DataSource>[
  HttpCatalogDataSource(client),
  SqliteCatalogCache(database),
]);

final remote = sources.get<CatalogRemoteDataSource>();
final cache = sources.maybeGet<CatalogCacheDataSource>();

get применяется для обязательного контракта, maybeGet — для необязательного. Оба метода отклоняют два совместимых объекта. Не используйте порядок списка для выбора реализации.