Комментарии 3
Тема "глупого" виджета и его связи с вашим MapViewModel не раскрыта.
ViewModel не нужен как и сам MVVM во Flutter'е.
TextController'ы, FocusNod'ы, AnimationController'ы тоже предлагаете выносить во ViewModel?
Use case не нужен - для инкапсуляции бизнес-логики у вас уже присутствует Bloc. Он не является частью presentation, это буквально Business Logic Component.
Классы зависимостей не должны быть singleton'ами.
Дальше продолжать не буду, статья - набор антисоветов.
Здравствуйте. Можете дать пояснения по п. 2 и 5? Спасибо.
"Глупый" виджет не является какой-то темой которую можно выделить, виджет не должен знать о модулях стоящих выше и все, это всего лишь аббревиатура.
Vm содержит в себе всю дополнительную логику, которую мы не покажем в view.
Когда у вас view начинает расти больше чем 300 строк пора задуматься куда и что выносить.
Bloc - это стейт-менеджер который зависит от бизнес логики выше. Use-Case нам помогает в обработке ответа от этой бизнес логики, например используя switch проверять пришедший к нам результат, и эмитить соответсвующее состояние. На больших проектах use_case вещь необходимая.
Я не писал о том, что классы зависимостей должны быть st, я описал то, что в di container мы ложим сингл тоны, т.к. di container иницилизирует в нем зависимости, доступные из любой точки приложения.
Архитектура Flutter проекта простым языком. Clean Arch (MVVM, DI, Bloc, Inversion of Control)