Рецепты
Явное владение 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 не регистрирует несвязанные базовые типы.