LazyLoad Developers
Ir al canal en Telegram
Курсы по мобильной разработке from zero to hero. По вопросам сотрудничества обращаться к @Jonfir Сайт - https://lazyload.academy Правила - https://lazyload.academy/code-of-conduct/ Cсылки на мои другие чаты и каналы https://lazyload.academy/we-in-social/
Mostrar más1 632
Suscriptores
Sin datos24 horas
+57 días
+630 días
Archivo de publicaciones
1 632
Новое видео на канале “Куда лучше идти работать и что нужно знать джуну”
https://youtu.be/vzZQRYnKheU
1 632
Вышел новый урок 67 "Основы работы с данными. themoviedb добавление пагинации.
https://youtu.be/XeOmwrWjaOw
1 632
На уроках про виджеты, контекст и ключи я рисовал схемы в миро. А тут мне подсказали, что можно же их просто в pdf экспоритировать) так что держите
1 632
На boosty доступен новый урок 80. Архитектуры - MVVM. Пример счетчика
https://boosty.to/lazyloadflutter/posts/593991b3-d89c-4fc8-92ef-12ddc6b1b339
https://www.patreon.com/posts/55198443
1 632
и при этом содержит очень крутую документацию. То есть, если в вашей компании нет сил на документирование и построение процесса анборадинга новчиков
можно использовать блок и просто использовать доку от ангела.
Недостатки bloc
Опять же в сравении с другими mvvm.
1) Огромный объем кода. Необходимо описать все эти евенты, состояния, подписываться на изменения,
особенно это заментно при свзяывании нескольких bloc.
2) Большой расход ресурсов на копирование состояния. Так как сейт иммутабельный,
при любом изменении нужно создавать новую копию. Если в стейте много данных, то это может вызвать расход памяти и нагрузку на CPU
3) Синхронизация bloc между собой. Если каждый bloc не зависит от других, или связи минимальны и линейны,
то есть все bloc зависят всего от одного жвух конкретных bloc (например bloc авторизации) то никаких проблем нет.
Если же множество bloc зависят от другого множеста, то потребуется очень много когда, что бы связать их между собой,
прийдется постоянно следить как изменения в одном bloc, влияют на другие bloc, а так же отслеживать циклические связи.
В целом зависимость одних bloc от других это прямое нарушение слоистой архитектуры, согласно которой сущности одного слоя не должны общаться между собой.
Выводы
Выводы конечно должен каждый сделать сам)
Но мое мнение, что блок стал попялрным не заслуженно и в большенстве проектов является излишним усложнением и не дает какого то профита.
1 632
Всем привет! Вы наверное уже поняли, что я не люблю использовать какие то технологии просто потому что они популярны.
Особенно если из коробки есть аналогичные технологии и даже проще.
Прежде чем решить, стоит ли тянуть что то в проект, это что то нужно всесторонне изучить.
Под все сторнне я имею ввиду, документацию, реализацию, мотивацию, замысел, похожие реализации.
Я готовлюсь снимать видео про bloc и соотвесвтенно подвергаю его тщательному анализу.
Ранее я уже пробовал делать на нем проекты, смотрел на реализацию самой поулярной библиотеки https://bloclibrary.dev/, писал свою реализацию.
Сейчас я изучаю различные материалы по этой архитектуре/стейт менеджеру, в том числе посмотрел видео где его представили в первый раз.
Очень рекомендую и вам его посмотреть - https://youtu.be/PLHln7wHgPE.
И так, что можно сказать на основе всей этой информации?
Что такое bloc?
1)Bloc как и многое в программировании не имеет какого четкого определения, все понимают его по разному.
Его считают архитектурой, стейт меджером, уникальным, лучшим, худшим.
2) Есть несколько реализаций которые можно назвать блоком. Но все сходятся во мнении что ключевая фишка наличие стрима.
То есть, bloc это некоторый класс, который содержит стрим или несколько стримов или сам является стримом, куда мы должны кидать какие то данные или события и ловить события на стримах с результатом.
В итоге можно сказать что bloc это точно не архитектура.
Это класс, который может содежрать какие то данные, реагировать на внешние действия и кидать в стрим данные, которые кто то слушает.
В каком то смысле можно назвать его стейт менеджером.
На что похож bloc?
Сам по себе bloc это просто реализация паттерна наблюдатель. Не больше не меньше.
Но так как я говорю о нем в контексе флаттера. То нужно учитывать для чего он используется.
А используется он для инкапсуляции бизнес логики или вызова сервисов с бизнес логикой и хранении стейта для виджета или нескольких виджетов.
При этом виджеты подписываются на иходящие стримы блока и обновляются при появлении новых событий.
Именно так работает архитектурный паттерн MVVM - https://ru.wikipedia.org/wiki/Model-View-ViewModel. Где
V(View) - виджеты
M(Model) - сервисы/репозитории/...
VM(ViewModel) - bloc
Нужно ли приэтом вообще выделять bloc в отдельную сущность? Почему просто не сказать что это VM?
Спорный вопрос, я бы его выделять не стал, но в сообществе уже привыкли к этому слову
и чаще всего говоря bloc имеют ввиду именно архитектуру - mvvm.
Еще можно выделить его, что бы подчеркнуть то что, мы реализуем не просто стейт менеджер, а стейт менеджер на стримах.
Зачем вообще придумали bloc?
Впервые bloc был представлен на этом выступлении https://youtu.be/PLHln7wHgPE.
И главная мотивация автора (Paolo Soares) это шаринг кода между flutter и angular!
То есть, он не мог использовать классы из flutter(Inherit, ChangeNotifire, Widget и др) в angular.
По этому вынес общую логику в отдельный класс (BussinesLogic), а что бы виджеты реагировали на изменения в нем,
автор добавил стримы. И назвал это решение Bloc - Bussines Logic Component. То есть кусок бизнес логики.
Еще раз - цель bloc это выделить бизнес логику в класс который не зависит от flutter. Все, на этом его изначальная миссия закончена.
Приемущества bloc
Так как блок это mvvm, которую можно легко реализовать разными способами, в том числе с помощью ChangeNotifire
я буду озвучивать его приемущества по сравнению именно с другими реализациями mvvm.
1) Независимость от flutter. Так как для реализации блока требуются только стримы, его легко можно реализовать на чистом dart и переиспользовать этот код например в angular.
2) Наличие очень популярной библиотеки - https://bloclibrary.dev/.
Так как мы тут пишем на флаттере, первое приемущество для нас роли не играет и наверное самое важное это второе.
Библиотека от ангела действительно является очень крутой штукой. Она позволяет реализовать стейт менджер с минимальными усилями
1 632
Всем привет! Вы наверное уже поняли, что я не люблю использовать какие то технологии просто потому что они популярны.
Особенно если из коробки есть аналогичные технологии и даже проще.
Прежде чем решить, стоит ли тянуть что то в проект, это что то нужно всесторонне изучить.
Под все сторнне я имею ввиду, документацию, реализацию, мотивацию, замысел, похожие реализации.
Я готовлюсь снимать видео про bloc и соотвесвтенно подвергаю его тщательному анализу.
Ранее я уже пробовал делать на нем проекты, смотрел на реализацию самой поулярной библиотеки https://bloclibrary.dev/, писал свою реализацию.
Сейчас я изучаю различные материалы по этой архитектуре/стейт менеджеру, в том числе посмотрел видео где его представили в первый раз.
Очень рекомендую и вам его посмотреть - https://youtu.be/PLHln7wHgPE.
И так, что можно сказать на основе всей этой информации?
Что такое bloc?
1)Bloc как и многое в программировании не имеет какого четкого определения, все понимают его по разному.
Его считают архитектурой, стейт меджером, уникальным, лучшим, худшим.
2) Есть несколько реализаций которые можно назвать блоком. Но все сходятся во мнении что ключевая фишка наличие стрима.
То есть, bloc это некоторый класс, который содержит стрим или несколько стримов или сам является стримом, куда мы должны кидать какие то данные или события и ловить события на стримах с результатом.
Довольно расплывчато как по мне. Но ок.
Какие приемущества есть у bloc?
1 632
Вышел новый урок 66: "Основы работы с данными. themoviedb получение списка фильмов от сервера.
https://youtu.be/hZA1gU38Di0
1 632
На boosty доступен новый урок 79. Провайдер (Provider) часть вторая
https://boosty.to/lazyloadflutter/posts/46cb416b-d32f-455a-a1d5-91049b13ef30
https://www.patreon.com/posts/54923963
1 632
Вы просили, я сделал! Видео о том как учится программировать и читать документацию))
https://youtu.be/6s1CzH8lgYY
1 632
На boosty доступен новый урок 78. Провайдер (Provider)
https://boosty.to/lazyloadflutter/posts/7b18dfe8-2b75-4d06-b327-d593fc9d5727
https://www.patreon.com/posts/54813177
1 632
Вышел новый урок 65 Основы работы с данными. themoviedb обработка ошибок сетевых запросов.
https://youtu.be/e0tFM6Fuj0A
1 632
На boosty доступен новый урок 77. Введение в архитектуру
https://boosty.to/lazyloadflutter/posts/d2d46891-4476-40ac-844d-0fd50f624f77
https://www.patreon.com/posts/54658362
1 632
Вышел новый урок 64: "Основы работы с данными. Универсальный inherited для моделей
https://youtu.be/WmgUuDojbm4
1 632
На boosty доступен новый урок 76 Основы работы с данными. Заключение.
https://boosty.to/lazyloadflutter/posts/f273c4dd-e192-4a27-bfe6-4736937ecf26
https://www.patreon.com/posts/54546170
1 632
На boosty доступен новый урок 75 Основы работы с данными. Запускаем themoviedb на android
https://boosty.to/lazyloadflutter/posts/eaf7e7bd-1f72-4b5c-aadd-8edab48d8e19
https://www.patreon.com/posts/54546147
1 632
Вышел новый урок 63: "Основы работы с данными. Themoviedb проверка авторизации на старте приложения"
https://youtu.be/mA3IpERZsJ0
1 632
Flutter Meetup: онлайн-митап для всех, кому интересна разработка на Flutter 🔥
4 августа, с 16:00 по 19:00 (Мск, GMT+3). Участие бесплатное.
Митап проводят РСХБ-Интех — IT-компания, которая разрабатывает цифровые продукты для Россельхозбанка. А онлайн-платформу со встроенным чатом предоставляют JUG Ru Group, организаторы одних из самых крупных технических конференций в стране.
Говорить будут о жизни с Flutter в Enterprise:
✔Продвинутые техники написания автотестов на Flutter;
✔Запуск Flutter на всех платформах;
✔Инструкция по применению изолятов;
✔Работа с Navigator 2.0.
А еще можно будет поболтать и похоливарить на Q&A-сессии.
👉 Подробно почитать программу митапа и зарегистрироваться можно на https://bit.ly/2Vc3s19
