Рецепты

Явное владение UseCase

Свяжите конструктор Provider с границей жизненного цикла, отвечающей за закрытие UseCase.

v0.1.0-dev.1Средний уровеньusecase_forge_flutter

Явное владение UseCase

Виджет, которому доступен UseCase, не обязательно владеет его жизненным циклом. Выбирайте конструктор по границе владения, а не по удобству.

UseCaseProvider создаёт и закрывает

lib/profile_screen.dart
UseCaseProvider<ProfileUseCase>(
  create: (context) => ProfileUseCase(repository),
  child: const ProfileScreen(),
)

Provider создаёт экземпляр один раз и вызывает close() при удалении из дерева. Используйте onCloseError, если приложению требуется явная обработка асинхронной ошибки закрытия.

UseCaseProvider.value сохраняет внешнее владение

lib/profile_screen.dart
UseCaseProvider<ProfileUseCase>.value(
  value: profileUseCase,
  child: const ProfileScreen(),
)

UseCaseProvider.value никогда не закрывает экземпляр. Ответственность остаётся у сервиса, родительской области или другой границы, которая его создала.

Отправляйте команду без подписки на идентичность Provider:

dart
context.readUseCase<ProfileUseCase>().add(const RefreshProfile());

Поиск требует точного типа UseCase. Предоставление конкретного ProfileUseCase не регистрирует несвязанные базовые типы.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.