Files
cherrypick/openspec/changes/cherrypick-system-spec/specs/flutter-integration/spec.md
2026-02-27 14:33:30 +03:00

3.3 KiB
Raw Blame History

ADDED Requirements

Requirement: Сущности Flutterинтеграции

Flutterинтеграция MUST предоставлять CherryPickProvider как InheritedWidget для доступа к DIscope в дереве виджетов.

Scenario: Публичная сущность провайдера

  • WHEN разработчик импортирует Flutterпакет
  • THEN CherryPickProvider доступен и может быть помещен в дерево виджетов

Requirement: Жизненный цикл провайдера

CherryPickProvider MUST быть статическим проводником к scope и не владеть их жизненным циклом.

Scenario: Stateless поведение

  • WHEN CherryPickProvider пересоздается с тем же child
  • THEN он не инициирует изменения DIсостояния и не уведомляет зависимые виджеты

Requirement: Доступ к root scope

Провайдер MUST предоставлять доступ к root scope через openRootScope.

Scenario: Открытие root scope

  • WHEN вызывается openRootScope
  • THEN возвращается root scope DIконтейнера

Requirement: Доступ к subscope

Провайдер MUST предоставлять доступ к subscope через openSubScope с именем и разделителем.

Scenario: Открытие named subscope

  • WHEN вызывается openSubScope с именем
  • THEN возвращается subscope с указанным именем

Scenario: Пустое имя scope

  • WHEN вызывается openSubScope без имени
  • THEN возвращается root scope

Requirement: Доступ через BuildContext

CherryPickProvider.of(context) MUST возвращать провайдер из ближайшего ancestor.

Scenario: Успешный lookup

  • WHEN вызов происходит внутри поддерева провайдера
  • THEN возвращается экземпляр провайдера

Scenario: Ошибка lookup

  • WHEN вызов происходит вне поддерева провайдера
  • THEN происходит assertionошибка

Requirement: Ошибки и сообщения

При отсутствии провайдера в дереве MUST быть диагностируемая ошибка.

Scenario: Диагностика отсутствия провайдера

  • WHEN CherryPickProvider.of(context) не находит провайдер
  • THEN сообщение об ошибке указывает на отсутствие провайдера

Requirement: Точки расширения

Flutterинтеграция MUST позволять использовать собственные DIscope стратегии поверх CherryPickProvider.

Scenario: Кастомная организация scope

  • WHEN приложение использует собственные правила создания subscope
  • THEN провайдер остается совместимым и не ограничивает стратегию