Size: a a a

Flutter Developers — русскоговорящее сообщество

2020 October 11

t

tdesc in Flutter Developers — русскоговорящее сообщество
и сложно "подменить" реализацию фичи в проекте
источник

t

tdesc in Flutter Developers — русскоговорящее сообщество
замена на блок это = класс с самописной бизнес логикой
источник

t

tdesc in Flutter Developers — русскоговорящее сообщество
было бы очень круто, если бы в следующей статье попровали "выпилить" мобх и оценить clean насколько пришлось глубоко залезть
источник

t

tdesc in Flutter Developers — русскоговорящее сообщество
и спасибо за статью 🙃
источник

s

san-smith in Flutter Developers — русскоговорящее сообщество
tdesc
было бы очень круто, если бы в следующей статье попровали "выпилить" мобх и оценить clean насколько пришлось глубоко залезть
Я попробую:)
источник

AK

Anton Karpov in Flutter Developers — русскоговорящее сообщество
san-smith
Цепочка здесь такая: SunriseServise -> ApiUtil -> DayRepository -> HomeState -> Home. Всё строго в одну сторону.
Спасибо.
Еще раз спасибо за статью, по итогу стало только немного жалко что такой пример маленький для демонстрации был выбран, т.к. доменная логика и usecase совсем не раскрыты.
Планируются ли еще статьи по flutter?
источник

s

san-smith in Flutter Developers — русскоговорящее сообщество
Пример был маленьким как раз для того, чтобы не отвлекать от основной идеи. Что касается ещё статей - есть несколько задумок, но пока не знаю, когда возьмусь за них.
источник

s

san-smith in Flutter Developers — русскоговорящее сообщество
san-smith
Пример был маленьким как раз для того, чтобы не отвлекать от основной идеи. Что касается ещё статей - есть несколько задумок, но пока не знаю, когда возьмусь за них.
Кстати, даже с таким маленьким примером статья получилась довольно большой, если бы ещё логики добавить, то это было бы уже не гуманно.
Хотя поначалу я планировал добавить возможность выбора координат на карте.
источник

DK

Danial Kolyasnikov in Flutter Developers — русскоговорящее сообщество
Maria
👍 чистая архитектура она на любом языке с любым фреймворком вроде +- одинаковая. Но статья полезна и надеюсь ее прочитает побольше флаттер-девелоперов 😊
Еще нужно описать как правильно проектировать компоненты, чтобы они были управляемыми снаружи и без обратных зависимостей, когда в дочерние виджеты прокидывают ссылки на  родительские целиком
источник

M

Maria in Flutter Developers — русскоговорящее сообщество
Danial Kolyasnikov
Еще нужно описать как правильно проектировать компоненты, чтобы они были управляемыми снаружи и без обратных зависимостей, когда в дочерние виджеты прокидывают ссылки на  родительские целиком
Ссылки на родительские что? Виджеты? Я такого не видела😁 блоки? Такую идею вроде предлагал сам создатель блок пакета.
источник

DK

Danial Kolyasnikov in Flutter Developers — русскоговорящее сообщество
Maria
Ссылки на родительские что? Виджеты? Я такого не видела😁 блоки? Такую идею вроде предлагал сам создатель блок пакета.
Я к сожалению видел. Я видел, когда в build методе виджета идет получение данных из bloc, который размещен в контексте, и это называли переносимым решением.
источник

M

Maria in Flutter Developers — русскоговорящее сообщество
Danial Kolyasnikov
Я к сожалению видел. Я видел, когда в build методе виджета идет получение данных из bloc, который размещен в контексте, и это называли переносимым решением.
Для меня это сложная тема. Я не очень люблю инхеритед виджеты поэтому (решения не очень переносимые получается, если инхеритед не тема или локаль), но это инструмент, который даёт флаттер и комьюнити его активно использует. Все презентации по стейт менеджмент решениям начинались раньше со слов: ну неужели вы будете передавать это все в конструктор снова и снова. Так что в каких-то случаях это наверное и ок. Смотря как делить на компоненты и что именно хотеть переносить
источник

DK

Danial Kolyasnikov in Flutter Developers — русскоговорящее сообщество
Maria
Для меня это сложная тема. Я не очень люблю инхеритед виджеты поэтому (решения не очень переносимые получается, если инхеритед не тема или локаль), но это инструмент, который даёт флаттер и комьюнити его активно использует. Все презентации по стейт менеджмент решениям начинались раньше со слов: ну неужели вы будете передавать это все в конструктор снова и снова. Так что в каких-то случаях это наверное и ок. Смотря как делить на компоненты и что именно хотеть переносить
Я считаю,что если есть логически отдельный компонент , то его обращение к данным из контекста - хреновое решение. Да ему нужно передать все в конструкторе, а дальше внутри должен быть свой блок, который занимается внутренней логикой и дает какое то апи для получения результатов этого компонента (контроллер, stream, future)
источник

M

Maria in Flutter Developers — русскоговорящее сообщество
Danial Kolyasnikov
Я считаю,что если есть логически отдельный компонент , то его обращение к данным из контекста - хреновое решение. Да ему нужно передать все в конструкторе, а дальше внутри должен быть свой блок, который занимается внутренней логикой и дает какое то апи для получения результатов этого компонента (контроллер, stream, future)
Да, согласна
источник

AK

Anton Karpov in Flutter Developers — русскоговорящее сообщество
san-smith
Пример был маленьким как раз для того, чтобы не отвлекать от основной идеи. Что касается ещё статей - есть несколько задумок, но пока не знаю, когда возьмусь за них.
Но ведь, честно говоря в чистой архитектуре две ключевые идеи для демонстрации: отделение логики приложения от внешнего мира/реализаций, и способ управления логикой приложения через usecase'ы и доменные сущности.

Вторая часть, кмк, не менее важная чем первая.
Если по итогу статьи поставить вопрос: а как модифицировать приложение таким образом, чтобы пользователь не мог делать запрос информации более 3 раз в день, думаю вариантов реализаций будет предложено очень много)
источник

t

tdesc in Flutter Developers — русскоговорящее сообщество
Danial Kolyasnikov
Я считаю,что если есть логически отдельный компонент , то его обращение к данным из контекста - хреновое решение. Да ему нужно передать все в конструкторе, а дальше внутри должен быть свой блок, который занимается внутренней логикой и дает какое то апи для получения результатов этого компонента (контроллер, stream, future)
я разделяю компоненты на умные и глупые.

умный компонент может знать про свой блок по контексту, еще какие то детали реализации и передавать все в глупые виджеты через конструктор
источник

DK

Danial Kolyasnikov in Flutter Developers — русскоговорящее сообщество
tdesc
я разделяю компоненты на умные и глупые.

умный компонент может знать про свой блок по контексту, еще какие то детали реализации и передавать все в глупые виджеты через конструктор
Тогда он не переносим.
источник

M

MiT in Flutter Developers — русскоговорящее сообщество
san-smith
Почему? Я прям сейчас могу выкинуть из того примера mobx и подставить на его место bloc.
Или вы про то, что я могу изменять отслеживаемые поля напрямую без экшнов?
Имхо с redux так не получится...
источник

t

tdesc in Flutter Developers — русскоговорящее сообщество
у умных компонентов нет такой цели, это просто темплейты для верстки
источник

DK

Danial Kolyasnikov in Flutter Developers — русскоговорящее сообщество
tdesc
у умных компонентов нет такой цели, это просто темплейты для верстки
Ну  тут вопрос терминологии. Компонент - атом. Все что состоит из компонентов - композиция( в моем словаре)
источник