Выбор ответа Middle Внедрение зависимостей обновлено

DI во Flutter

Вопрос

Какой подход к DI типичен во Flutter-приложениях?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Провайдеры через дерево виджетов (Provider, Riverpod) или локатор getit, часто с injectable. Во Flutter зависимости часто передают через дерево виджетов (Provider, Riverpod с проверками на уровне типов) или через сервис-локатор getit.

Варианты ответа

  1. Провайдеры через дерево виджетов (Provider, Riverpod) или локатор get_it, часто с injectableправильный ответ
  2. Dagger через platform channels: граф собирается на Android и пробрасывается в Dart-код
  3. DI во Flutter не нужен: виджеты сами держат зависимости в State и обновляют их через setState
  4. Глобальные переменные в main.dart, которые инициализируются до runApp без каких-либо правил

Разбор

Во Flutter зависимости часто передают через дерево виджетов (Provider, Riverpod с проверками на уровне типов) или через сервис-локатор get_it. Это разные философии: Riverpod ближе к DI с явными провайдерами, get_it проще, но прячет зависимости. Dagger это Java/Kotlin. setState про состояние виджета, а не про зависимости.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.