Flutter с нуля до профи | #9 - Bloc стейт менеджмент №1 | Курс для начинающих 2023
Vložit
- čas přidán 27. 07. 2024
- Flutter - это идеальный инструмент, чтобы начать путь в айти или перейти на него в 2023. А я как раз тот самый коуч, которого ты искал.
Ура! Наконец-то BLoC 😅.
В этом уроке мы познакомимся с самым популярным и самым продуманным стейт-менеджментом для Flutter приложений - BLoC'ом. Узнаем как работает BLoC, как построен его жизненный цикл. Как работает BlocBuilder. Как обрабатывать ошибки в ваших блоках логики. И прикрутим это все к нашему крипто-приложению.
В ходе курса, мы вместе разберемся с тем, что такое Flutter и как на нем сделать первое приложение. Научимся программировать на dart, узнаем про основные виджеты в Flutter, как работать с сетью http dio, узнаем про основной стейт менеджемнт в Flutter - BLoC.
😎 Репозиторий с кодом из уроков: github.com/Frezyx/flutter_tut...
Ссылки из видео:
⬇️ Библиотека BLoC pub.dev/packages/bloc
⬇️ Библиотека Flutter BLoC pub.dev/packages/flutter_bloc
⬇️ Extension BLoC для VScode marketplace.visualstudio.com/...
✅ Полезные ссылки:
👨💻 Мой GitHub github.com/Frezyx (Куча кода на dart / Flutter)
💬 Telegram с анонсами t.me/frezycode
🚀 Boosty boosty.to/frezycode
📸 Instagram / frezycode
00:00 - 00:13 Вступление
00:13 - 00:43 Что такое стейт - менеджмент
00:43 - 01:00 Какие есть библиотеки (provider, riverpod, mobx, getx)
01:00 - 01:10 Почему мы изучаем именно BLoC ?
01:10 - 03:55 Как работает BLoC (Event, State)
03:55 - 04:49 Детали BLoC: onEvent, EventHandler, EventTransformer, emit
04:49 - 05:18 Как работает Cubit отличие от BLoC
05:18 - 05:52 Про надстройки для BLoC
05:52 - 06:27 Устанавливаем flutter_bloc
06:27 - 7:58 Создаем наш первый BLoC в приложении
07:58 - 08:52 Что такое part и part of
08:52 - 09:28 Как создавать BLoC в 2 раза быстрее, mason
09:28 - 12:27 Разбираемся с базой BLoC, про ивенты и стейты
12:27 - 12:58 EventHandler, метод onEvent
12:58 - 15:09 Пишем свой обработчик евента на загрузку данных
15:09 - 15:25 Как вызвать Event у BLoC’а, метод add()
15:25 - 15:59 Проверяем работу нашего EventHandler
15:59 - 17:32 Выносим логику загрузки криптовалют в BLoC
17:32 - 18:29 Создаем стейты для нашего BLoC’а
18:29 - 19:05 Возвращаем загруженные криптовалюты из блока
19:05 - 21:33 Как работает BlocBuilder, показываем загруженные данные
21:33 - 22:04 Про абстрагированность данных в State
22:04 - 23:03 Проверяем как работает загрузка через BLoC
23:03 - 25:31 Обработка ошибок в BLoC
25:31 - 25:58 Почему ошибки в стойте лучше делать Object
25:58 - 26:47 Делаем обработку ошибок нашего блока
26:47 - 28:27 Добавляем экран ошибки в BlocBuilder
28:27 - 29:02 Послание из будущего
#войтивайти #программирование #flutter
Не бросай мы начинающие держимся на Вас. Настолько четко понятно грамотно объяснили
До такой степени четко и грамотно объясняет, что пол часа прошел как пять минут. Большое Вам спасибо за Вашу работу.
Спасибо большое за вашу работу, Я в замешательстве, это не должно быть бесплатным
наконец то кто-то в ютубах начал объяснять что такое Bloc !! спасибо.
Класс !
Только не забрасывай этот курс
Как только этот курс вольется в массы, донаты обеспечены )
Супер спасибо тебе большое за крутой урок !
Самое понятное объяснение , лаконичное и понятное. Спасибо огромное !
Вам спасибо, что смотрите 🙏
очень понятное объяснение, спасибо большое !
Спасибо! Все очень доступно, детально и понятно👍
Спасибо! Все очень четко и ясно🤝👍👍👍
Как любит говорить мой кореш, Ты просто ЛУЧШИЙ XD
Пока пишу в след за вами, все думаю - как хорошо я в это время затарился битком)
Спасибо большое за крутой урок!
Спасибо)
Спасибо
Прикольно get_it все хотел понять зачем нужен, тут на примере увидел пользу )
Да, все эти вложенности зависимостей очень хорошо им решаются)
Так, тут всё получилось. Кроме того, что не получилось вывести кнопки, которые у меня ранее уже были. Но вроде кнопки в следующем видео. Ну или поиске рифм найду.
Great job bro
Thanks a lot, man😌
Стас:
Для начала хотелось бы узнать, что такое State management.
Google переводчик:
"Государственное управление" 😆
Управление состоянием это) В нашем случае управление состоянием приложения.
👍👍👍
that's good mate, you're talented at speaking and understanding 😉😉
Thanks a lot! Is Russian one of the languages you speak?
@@frezycode yeah I know Russian language
давай писать небольшой проект
Сәлем от Казахстан🇰🇿
такой вопрос, почему конструктор всегда переносишь в самы верх?
Возник такой вопрос. Насколько сильно отличается мобильная и десктопная разработка на Flutter? Насколько хорошая интеграция с той же Windows? Планирую написать твикер для Windows
Окей, если найду время - сделаем видео про особенности десктопа на flutter. А вообще flutter очень качественно спроектирован. В 90% все одинаково пишется.
Благодарю за ценный материал и понятное объяснение😊Можно не передавать класс репозитория в конструктор блока, а сразу получить его внутри класса блока с помощью GetIt? Или это как то по логике не верно?
Вам спасибо большое за обратную связь! Лучше всегда передавать репозитории через конструктор, для того, чтобы вы понимали что в коде происходит.
Код всегда должен быть предсказуемым и понятным. Чтобы другие разработчики не лезли внутрь и не искали что же там за репозиторий используется и где он инициализируются.
Я пока не совсем уловил смысл данных блоков, так выглядит буд то мы ничего не изменили а просто сделали отдельную комнату для работ с отображением элементов. Может это так оно и есть или я что то не понял?
А чем тогда отличается part от import?
на stackoverflow пишут, что команда Dart, якобы разочарована в использовании part / part of и вроде как в следующей версии Dart от этой конструкции хотят отказаться. 🤷♂
Не знаю чем они там разочаровались. Я от part балдею очень знатно)
Лев
15:10 А зачем добавляется LoadCryptoList ?
есть еще такой блок stream_bloc от крутого разраба
Спасибо за видео! Все доступно и очень понятно.. но столкнулся с такой проблемой может кто-то подскажет как реализовать.. Если все в одном виджете то все работает (BlocA.add(eventName()) отправляется и стейт отрисовывается), а если мне надо в одном виджете по нажатию кнопки отправить этот же ивент BlocA.add(eventName()), а в другом виджете перерисовать стейт то стейт не перерисовывается хотя в дебаге вижу что в event заходит🤷♂ Может быть есть какая-то особенность при работе с bloc из разных виджетов?
Привет! возможно ты используешь два разных инстанса блока. То есть отправляешь в один, а слушаешь другой.
@@frezycode Действительно так и было, спасибо👍
напомнило czcams.com/video/qLqWg3m2z1Y/video.html )))
Ахххщпозхзшп, спасибо)
MVVM - model viewModel View.... *Facepalm*
Кринж
Омг. Зачем так сложно..🫣
Куча файлов, классов, кода..что бы дернуть одну ручку и организовать стейт. Здоровья вам флатеристы)
Merge Conflict, bro. Когда много людей пилят одно приложение, то лучше, чтобы их изменения были в разных файлах и не пересекались. Когда пишешь один - пиши как удобнее. Но а Flutter после Vue3 и MAUI/C# кажется чем-то WinApi из 90 ))