Flutter

Flutter-интеграция

Контейнеры Ark DI в дереве виджетов с явным владением и типизированным BuildContext API.

v1.1.0Начальный уровеньark_di_flutter

Flutter-интеграция

ark_di_flutter адаптирует существующий DiContainer к Flutter. Пакет не добавляет регистрации во время выполнения и не переносит создание объектов в виджеты.

Модель владения

text
Bootstrap создаёт DiContainer приложения
        ↓
DiRootScope предоставляет контейнер дереву Widget
        ↓
DiScope создаёт дочерний контейнер ограниченного поддерева
        ↓
BuildContext разрешает ближайший Scope
        ↓
удаление поддерева закрывает принадлежащие дочерние зависимости

Дерево виджетов задаёт границы времени жизни; базовый контейнер по-прежнему отвечает за регистрацию, разрешение, обнаружение циклов и порядок завершения.

  • DiRootScope предоставляет контейнер приложения.
  • DiScope создаёт дочерний контейнер и управляет им.
  • DiBuildContextExtension даёт подписанный и разовый доступ.
  • service_locator.dart — отдельная opt-in библиотека совместимости.

Выберите точку входа

ЗадачаМатериал
Один контейнер приложения и один Scope функцииРуководство «Scope Flutter-приложения»
Правила владения и замены«Корневой и дочерний Scope»
Перестроение при замене ближайшего контейнераcontext.di в «Доступ через BuildContext»
Разовое чтение в обратном вызовеcontext.readDi в «Доступ через BuildContext»
Legacy API требует Service Locator«Opt-in Service Locator» после изучения ограничений

Не используйте BuildContext в доменных объектах и не сохраняйте дочерний DiContainer глобально. Разрешите зависимости на границе Widget или композиции функции, а ниже передавайте обычные аргументы конструкторов.