Пара мыслей по поводу стейт менеджмента в Flutter
Мы пытаемся рассматривать bloc, riverpod и другие менеджеры состояний как место где можно писать бизнес-логику и хранить состояние.
Я считаю, что стоит строго отделить инструменты управления состоянием UI и состоянием системы.
Есть несколько аргументов:
- изменения состояния системы не обязательно будет затрагивать слой UI
- объекты bloc подвязываются к ЖЦ виджетов
- bloc включает в себя данные, необходимые для UI.
Из redux я вспонил понятие Global State. И кажется мы совсем забыли про него. А ведь это важная часть системы. Его недостатком в Flutter можно считать попытку позиционировать себя как Global State. НЕЛЬЗЯ ХРАНИТЬ ВСЕ ЯЙЦА В ОДНОЙ КОРЗИНЕ. Redux желал быть всеобъемлющим.
Надеюсь сформировать мысли по поводу того как должен выглядеть такой State Holder.
Пока такие термины: агрегат, транзакции, промежуточная консистентность состояния
Канал про технологии - @Gubin_dev
Мы пытаемся рассматривать bloc, riverpod и другие менеджеры состояний как место где можно писать бизнес-логику и хранить состояние.
Я считаю, что стоит строго отделить инструменты управления состоянием UI и состоянием системы.
Есть несколько аргументов:
- изменения состояния системы не обязательно будет затрагивать слой UI
- объекты bloc подвязываются к ЖЦ виджетов
- bloc включает в себя данные, необходимые для UI.
Из redux я вспонил понятие Global State. И кажется мы совсем забыли про него. А ведь это важная часть системы. Его недостатком в Flutter можно считать попытку позиционировать себя как Global State. НЕЛЬЗЯ ХРАНИТЬ ВСЕ ЯЙЦА В ОДНОЙ КОРЗИНЕ. Redux желал быть всеобъемлющим.
Надеюсь сформировать мысли по поводу того как должен выглядеть такой State Holder.
Пока такие термины: агрегат, транзакции, промежуточная консистентность состояния
Канал про технологии - @Gubin_dev
👍2😱2❤1🔥1
Продолжаю читать DDD (Предметно-ориентированное проектирование)
Хотел как-то резюмировать раздел про предохранительный уровень (anticorruption layer)
https://telegra.ph/Predohranitelnyj-uroven-anticorruption-layer-01-13
Канал про технологии - @Gubin_dev
Хотел как-то резюмировать раздел про предохранительный уровень (anticorruption layer)
https://telegra.ph/Predohranitelnyj-uroven-anticorruption-layer-01-13
Канал про технологии - @Gubin_dev
Telegraph
Предохранительный уровень (anticorruption layer)
Я хочу выделить всего три понятия из книги: - adapter - по сути преобразовывает вызовы из одного формата в другой. Представьте что вас есть система, которая долгое время завязывалась на какой-то модуль и он довольно прочно вплелся в нее. Тогда нам необходимо…
🔥3⚡1👍1
Там Билайн на днях поделился своей архитектурой в статье
Я прочитал немного, ребята используют классические подходы, но приходят к странным выводам и странным решениям.
Мне конкретно не нравится, что они модифицируют классы виджетов для реализации DI. С другой стороны, интересное решение, чтобы не плодить вызовы одного объекта (например, локатора). Но почему бы тогда не использовать простой provider?
В общем вопросов много, если у вас есть какие-нибудь замечания, идеи для обсуждения по этой статье/архитектуре в целом, пишите в комментарии, давайте вместе помозгуем
Канал про технологии - @Gubin_dev
Я прочитал немного, ребята используют классические подходы, но приходят к странным выводам и странным решениям.
Мне конкретно не нравится, что они модифицируют классы виджетов для реализации DI. С другой стороны, интересное решение, чтобы не плодить вызовы одного объекта (например, локатора). Но почему бы тогда не использовать простой provider?
В общем вопросов много, если у вас есть какие-нибудь замечания, идеи для обсуждения по этой статье/архитектуре в целом, пишите в комментарии, давайте вместе помозгуем
Канал про технологии - @Gubin_dev
Хабр
Об одном способе реализации архитектуры крупного Flutter-приложения
Привет! Меня зовут Олег Скирюк, я лидирую контент-разработку в одной из команд билайна. Сам я перешёл в мобильную разработку из веба три года назад, после чего собрал и обучил одну из первых...
👍3⚡1🔥1😱1
Gubin_dev
Открывается набор на программу Сириуса и Яндекса «Научно-практический интенсив по мобильной разработке» Если вы уже какое-то время занимаетесь программированием и вам интересна мобильная разработка, это ваш шанс пройти насыщенный знаниями курс по ios или…
Прием заявок заканчивается в это воскресенье
👍1😱1👨💻1😨1
15 февраля сгонял на Mobile Peerlab от Яндекса
Было круто и атмосферно! Поболтали в тусовочно-домашнем формате. Обсудили флаттер в вебе, архитектуру (как без этого), поговорили про Backend-Driven UI. Ну и просто поболтали и обменились опытом.
Было несколько треков: flutter, android, ios.
Так уж получились, что узнал про это мероприятие в последний момент.
Постараюсь сделать для вас анонсы классных тусовок!
А пока делюсь с вами фоточками
Подробнее можно почитать на сайте: https://dev.go.yandex/events/peer-lab
Было круто и атмосферно! Поболтали в тусовочно-домашнем формате. Обсудили флаттер в вебе, архитектуру (как без этого), поговорили про Backend-Driven UI. Ну и просто поболтали и обменились опытом.
Было несколько треков: flutter, android, ios.
Так уж получились, что узнал про это мероприятие в последний момент.
Постараюсь сделать для вас анонсы классных тусовок!
А пока делюсь с вами фоточками
Подробнее можно почитать на сайте: https://dev.go.yandex/events/peer-lab
❤4🔥3💋2
Работа с rootBundle в Flutter
rootBundle позволяет подгружать файлы из ассетов, однако не все знают, что эта операция является синхронной и в devtools, на вкладке performance она отображается как AssetManager::GetAsMapping.
Будьте осторожнее когда грузите данные из ассетов, ведь это может обернуться потерей кадров.
Кстати, есть интересный участок кода во flutter (можно увидеть на скрине или по ссылке) https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/services/asset_bundle.dart#L88
Получается, что в некоторых случаях даже лучше просто вычислить значение в изоляте?
А еще некоторые ассеты могут вызываться в worker thread’е)
https://github.com/flutter/engine/pull/6648
rootBundle позволяет подгружать файлы из ассетов, однако не все знают, что эта операция является синхронной и в devtools, на вкладке performance она отображается как AssetManager::GetAsMapping.
Будьте осторожнее когда грузите данные из ассетов, ведь это может обернуться потерей кадров.
Кстати, есть интересный участок кода во flutter (можно увидеть на скрине или по ссылке) https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/services/asset_bundle.dart#L88
Получается, что в некоторых случаях даже лучше просто вычислить значение в изоляте?
А еще некоторые ассеты могут вызываться в worker thread’е)
https://github.com/flutter/engine/pull/6648
❤3🗿2🔥1🤔1
2 апреля пройдет конференция для Flutter-разработчиков
Расскажут как метчить Flutter c отечественной ОС Аврора
https://auroraos.timepad.ru/event/2820781
Расскажут как метчить Flutter c отечественной ОС Аврора
Первая конференция для разработчиков про использование Flutter для создания или портирования приложений для российской мобильной операционной системы "Аврора"
https://auroraos.timepad.ru/event/2820781
auroraos.timepad.ru
Flutter на ОС Аврора. Развитие сообщества, экосистемы и инструментов разработки / События на TimePad.ru
Первая конференция для разработчиков про использование Flutter для создания или портирования приложений для российской мобильной операционной системы "Аврора"
🤡9👍1👀1
20 апреля пройдет конференция для мобильных и бэкенд-разработчиков DEV DAY & NIGHT
На конференции вас ждут два трека: backend и mobile. Скажу за мобилку, будет про ios, android и flutter
И говоря о флаттер, будет бомбовый доклад про DI от Сергея кольцова (Руководитель core-команды Яндекс Про), загадочный доклад про анализ энергопотребления от Никиты Васильченко (Руководитель команды перформанса Яндекс Про).
Я лично думаю что в мобилке тоже трек поделят как минимум на два, а может и на три параллельных.
Регистрируйтесь, количество мест ограничено
Подробнее: *ссылка*
На конференции вас ждут два трека: backend и mobile. Скажу за мобилку, будет про ios, android и flutter
И говоря о флаттер, будет бомбовый доклад про DI от Сергея кольцова (Руководитель core-команды Яндекс Про), загадочный доклад про анализ энергопотребления от Никиты Васильченко (Руководитель команды перформанса Яндекс Про).
Я лично думаю что в мобилке тоже трек поделят как минимум на два, а может и на три параллельных.
Регистрируйтесь, количество мест ограничено
Подробнее: *ссылка*
❤3🔥3🌚3👍2🎉1🗿1
Написал алгоритм нахождения оптимального пути на dart
Генерация происходит случайным образом, проходит по каждой клетке и с вероятностью 0.3 ставим стену.
Поиск пути происходит через BFS (breadth-first search, поиск в ширину) + backtracking. Помечаем пройденные клетки числами и если в рекурсии наткнулись на число, которое оптимальнее нашего, прекращаем ветку, и отдаем другой ветке преимущество.
Репозиторий: https://github.com/WebMad/maze_generator
Генерация происходит случайным образом, проходит по каждой клетке и с вероятностью 0.3 ставим стену.
Поиск пути происходит через BFS (breadth-first search, поиск в ширину) + backtracking. Помечаем пройденные клетки числами и если в рекурсии наткнулись на число, которое оптимальнее нашего, прекращаем ветку, и отдаем другой ветке преимущество.
Репозиторий: https://github.com/WebMad/maze_generator
🔥3❤2🎉1😎1
This media is not supported in your browser
VIEW IN TELEGRAM
Генератор островов на dart
В процессе усложнил себе задачку и написал алгос, который генерирует острова, окруженные водой.
По сути, основано на рекурсии, чекаем есть ли рядом уже острова и, если есть, поднимаем лапки к верху и прекращаем рисовать остров в эту сторону.
В процессе усложнил себе задачку и написал алгос, который генерирует острова, окруженные водой.
По сути, основано на рекурсии, чекаем есть ли рядом уже острова и, если есть, поднимаем лапки к верху и прекращаем рисовать остров в эту сторону.
🔥3❤1💊1
Пирамидки на Flutter
Другими словами, ханойская башня. Звучит конечно уже получше, чем пирамидки.
По сути, классика, работает через рекурсию.
Репозиторий: https://github.com/WebMad/hanoi_tower
Другими словами, ханойская башня. Звучит конечно уже получше, чем пирамидки.
По сути, классика, работает через рекурсию.
Репозиторий: https://github.com/WebMad/hanoi_tower
🤨3💋1🗿1
Gubin_dev
Прозрачность во Флаттер Прозрачность во флаттер может быть коварным инструментом, который в некоторых случаях значительно увеличивает сложность отрисовки страницы. Сам по себе виджет Opacity вызывает операцию saveLayer (см операции skia). Эта операция занимает…
Помните я полгода назад затирал про оптимизации?
Так вот, спустя столько времени, сообщество GDG Astrakhan все-таки решили опубликовать записи докладов 😋
Если интересует тема оптимизации отрисовки вашего Flutter-приложения, велкам ❤️
Там я рассказываю:
- как происходит отрисовка кадра во флаттер
- рассматриваю основные ошибки при построении UI
- делюсь дельными советами по оптимизации существующего UI
- рассказываю про devtools в рамках оптимизации отрисовки
- обзорно прохожусь по инструменту skia debugger
- затрагиваю тему Impeller'а (не так уж он и хорош на андроиде, честно говоря )
https://youtu.be/buAGswCcw-c?si=56Z5adI41Cwr48Jz
Так вот, спустя столько времени, сообщество GDG Astrakhan все-таки решили опубликовать записи докладов 😋
Если интересует тема оптимизации отрисовки вашего Flutter-приложения, велкам ❤️
Там я рассказываю:
- как происходит отрисовка кадра во флаттер
- рассматриваю основные ошибки при построении UI
- делюсь дельными советами по оптимизации существующего UI
- рассказываю про devtools в рамках оптимизации отрисовки
- обзорно прохожусь по инструменту skia debugger
- затрагиваю тему Impeller'а (
https://youtu.be/buAGswCcw-c?si=56Z5adI41Cwr48Jz
🔥2
Итак, немного поздно, но!
Расчищайте планы на вечер, сегодня буду вести лекцию в Школе Мобильной Разработки от Яндекса.
Тема: Architecture. Часть 1: App Architecture Overview
Буду рассказывать про общие правила проектирования/разработки. Интересно будет тем, кто только начинает втягиваться в архитектуру. Рассказываю про SOLID и все что на переферии, затрону немного DI, подробно расскажу про связность и сцепку компонентов (REP, CCP, CRP, ADP, SDP, SAP). Рассмотрим некоторые паттерны проектирования.
Всем хорошего дня, увидимся вечером, в 19:00, на лекции
Ссылочка: https://www.youtube.com/live/Hy4grS4u6HE
Расчищайте планы на вечер, сегодня буду вести лекцию в Школе Мобильной Разработки от Яндекса.
Тема: Architecture. Часть 1: App Architecture Overview
Буду рассказывать про общие правила проектирования/разработки. Интересно будет тем, кто только начинает втягиваться в архитектуру. Рассказываю про SOLID и все что на переферии, затрону немного DI, подробно расскажу про связность и сцепку компонентов (REP, CCP, CRP, ADP, SDP, SAP). Рассмотрим некоторые паттерны проектирования.
Всем хорошего дня, увидимся вечером, в 19:00, на лекции
Ссылочка: https://www.youtube.com/live/Hy4grS4u6HE
YouTube
Architecture. Часть 1: App Architecture Overview — ШМР Flutter 2024
В рамках лекции мы рассмотрим, что подразумевается под “архитектурой” приложения; почему важно разделять код проекта на слои, какие они бывают и что такое Clean Architecture. Обзорно пройдёмся по тому, какие существуют подходы к работе с зависимостями (service…
🔥11😱2🏆1👻1