Пікірлер
@max96169
@max96169 23 сағат бұрын
Для этого есть ValueGetter или Optional value.
@user-yd7zx9pr7b
@user-yd7zx9pr7b 2 күн бұрын
Спасибо за видео ❤
@mymood7145
@mymood7145 12 күн бұрын
Тебя приятно слушать
@mymood7145
@mymood7145 12 күн бұрын
Спасибо что ты есть
@gibraterisov3717
@gibraterisov3717 13 күн бұрын
На продакшене что из этих 2-х подходов чаще используется. Подход с несколькими состояниями или с одним но с copyWith? И является ли freezed хорошей практикой в продакшене?
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 11 күн бұрын
На коммерческих проектах используются оба подхода (из моей практики). Иногда варианты реализации состояний выбирают чисто из подхода, который уже используется в проекте (даже если это не совсем правильно). Как такового каноничного решения тут нет - у каждого подхода есть свои положительные и отрицательные стороны. С появлением sealed-классов стало намного проще работать с состояниями в рамках языка (switch намного облегчает понимание кода). Но если нужно иметь какие-то общие поля в разных состояниях, или просто переносить информацию из одного в другое - придется постоянно их переписывать, либо же где-то в Блоке хранить. Генерация состояний через freezed имеет ряд недостатков, в особенности если будет одно состояние, ибо шанс не так что-то в UI написать становится гораздо больше. У freezed нет возможности делать общие поля (от родителя), да и сама генерация кода процесс не сильно быстрый, если много таких файлов. Если говорить чисто про freezed, то местами он избыточен. Помимо copyWith, там генерятся еще методы для работы с вариантами класса, и не все они используются где-то в проекте. Но и самописный copyWith - не совсем хорошая идея (t.me/fluttermiddlepodcast/321), и кодоген тут помогает.
@hrachasatryan939
@hrachasatryan939 14 күн бұрын
Есть пакет quiver, можно и это использовать
@user-pf2wl8hs9u
@user-pf2wl8hs9u 16 күн бұрын
Интересно, Ноя например использую android studio, было бы интересно посмотреть ролик про его настройку
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 16 күн бұрын
Был пост про это в том месяце: t.me/fluttermiddlepodcast/278.
@ilnurV99
@ilnurV99 18 күн бұрын
дать возможность присваивать null удалив "?? this.error" ?
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 11 күн бұрын
Да, но на больших классах нужно будет обязательно каждое поле указывать. Бизнес-логика имеет свойство расширяться, так что рано или поздно придется искать какое-то другое решение.
@Oleksandr-i2l
@Oleksandr-i2l 18 күн бұрын
Полезное видео, спасибо )
@epsilon4738
@epsilon4738 22 күн бұрын
Контент, кайф! Жду продолжение До этого пользовался только связкой из Provider + ChangeNotifier Вот решил начать изучать что по круче и прям огонь объясняешь Если есть возможность, сделай видео где ты + 1 или 2 станицы добавляешь и с помощью go_router (или ещё чего нибудь подобного) передаешь параметры между страницами (и блоками получается) Возможно странная просьба, но очень хочу посмотреть как это "принято" делать
@user-yd7zx9pr7b
@user-yd7zx9pr7b 23 күн бұрын
Отлично! Спасибо за информацию! Жду от вас новых видео!!!
@-Sergey
@-Sergey 27 күн бұрын
Способ выглядит прям очень эффективным. Но назвать его "без особых усилий" язык не поворачивается. Как будто усилий как раз надо много, а главное долго. Но, пожалуй стоит заняться своим профилем на линкед ине прямо сегодня.
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 27 күн бұрын
Да, какое-то время нужно потратить на оформление профиля, но с учетом того, сколько информации и примеров есть на эту тему, будет намного проще, чем самому гадать, как и что написать. Так же, рекрутеры табуном в первый месяц или два не будут приходить, на рост коннекшенов тоже нужно время. Но эффект в перспективе очень большой, особенно если нормально все сделать.
@nothing2be
@nothing2be 27 күн бұрын
Видео из будущего?
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 27 күн бұрын
Почти) Ошибки как были одни и те же 2-3 года назад, так и сейчас есть.
@itzyfun6129
@itzyfun6129 28 күн бұрын
Спасибо!
@-Sergey
@-Sergey 29 күн бұрын
Ну и кстати отличный спойлер на 2026 год.
@-Sergey
@-Sergey 29 күн бұрын
4:52 не уверен, что хороший рекрутёр должен "входить в положение" в такой ситуации. По-моему, Дэн Кэннеди очень хорошо сказал по этому поводу: "Если человек не способен прийти вовремя на первую встречу, то где он не налажает?"
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 29 күн бұрын
Согласен, но бывают и исключения. Нам как-то пришлось убрать из расчета то, что кандидат не пришел на собеседование, и причиной такому поступку была банальная скорая надобность в разработчике. Больше скажу, парень отказался от нашего предложения в пользу другой компании, но когда с ними не заладилось, пришел к нам обратно. Года 2 назад, да и сейчас тоже, трудно найти разработчика с требуемым опытом, особенно в короткий срок.
@-Sergey
@-Sergey 29 күн бұрын
@@fluttermiddlepodcast1220 Конечно, же ситуации бывают очень разные. Просто такой серьёзный флаг, впрочем вы же об этом и сказали. А вот по поводу "больше", мне как раз кажется, что выбрать другой проект и потом передумать - это вполне нормально. Человек полностью свободен выбирать, что ему по душе и менять этот выбор, если на то будут причины. Он же вас никак не подводил, просто выбрал другую компанию. То есть это никак его плохо не характеризует. Ну мне так видится.
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 25 күн бұрын
Да, но все равно осадок может остаться) Тут уже больше все зависит от того, насколько срочно нужен человек, и как руководство относится к таким решениям. Ну и нет гарантий, что если такому сотруднику предложат через пару месяцев новое место работы, он не уйдет.
@KimuraZhakeshi
@KimuraZhakeshi Ай бұрын
тот самый контент которого не хватала!
@denis_galkin
@denis_galkin Ай бұрын
господи, какой же трешак этот дарт)
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Не сказал бы. На любом языке и на любом фреймворке можно заруинить проект с помощью плохих практик. Тут больше вопрос в том, что не все делают так, как нужно, и по каким-то непонятным причинам отходят от правильного подхода в пользу самописного решения. Знаю пару примеров, когда коммуникацию между блоками делают не с помощью виджетов из flutter_bloc, а через сторонние сервисы коммуникации. Но в таких реализациях нет стримов внутри блоков, и сами блоки все же ничего друг о друге не знают.
@denis_galkin
@denis_galkin Ай бұрын
@@fluttermiddlepodcast1220 Да, так и есть, но все таки существуют более удобные интсрументы и менее)
@Dominic_Herzog
@Dominic_Herzog Ай бұрын
и в чем трешак? по-моему, такие основные минусы дарта на данный момент: 1. Кодогенерация. Слишком много кодогенерации, приходится ждать по 1-2 минуты иногда. 2. Нет привычной многопоточки, как в других языках (например, котлин, java, c#), что является большей проблемой, как по мне. Проблему кодогенерации можно будет решить в большой степени с помощью макросов, которые выйдут в этом - начале следующего года. С многопоточкой тоже разбираются.
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 25 күн бұрын
По поводу кодогенерации - можно настроить раннер так, чтобы он только на определенный файлы смотрел, либо же написать скрипт, который сам все необходимое (что в Гите отображается как измененное, например). Но это больше на костыль похоже (которым пользуются), чем на решение, особенно когда у тебя очень много файлов.
@Dominic_Herzog
@Dominic_Herzog 25 күн бұрын
@@fluttermiddlepodcast1220 Да, знаю, но когда файлов много - уже не спасает))
@mrblack2080
@mrblack2080 Ай бұрын
Одни из самых полезных видео по flutter!
@templeoflunacy
@templeoflunacy Ай бұрын
4:30 как я понимаю ошибка, один из методов объекта context"а даёт нам совершить подписку на изменения (dependOnInheritedWidgetOfExactType)
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Да, все верно.
@templeoflunacy
@templeoflunacy Ай бұрын
Шикарно! Судя по мисскликам привыкаешь к split клавиатуре?)
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Насколько помню, это видео писалось на Макбуке 2018 года с самой косячной яблочной клавиатурой (где часто западали клавиши). Видимо, печатать действительно было не удобно)
@Dominic_Herzog
@Dominic_Herzog Ай бұрын
event и state перепутал :)
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Да, тоже заметил. Спасибо за комментарий. Правки уже в репозитории.
@Dominic_Herzog
@Dominic_Herzog Ай бұрын
@@fluttermiddlepodcast1220 круто! Да я так, просто написал)
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Спасибо большое за комментарий.
@user-qf2yc6hg7h
@user-qf2yc6hg7h Ай бұрын
Большое спасибо за ролик, очень полезная информация, еще было бы интересно узнать про публикацию приложения, именно про ключи, сертификаты, testflight и ci/cd для быстрой публикации новых версий
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
По-хорошему, нужно бы сделать. Если придумаю что-нибудь с приложением, даже небольшим, и найду аккаунт в Google Play и App Store, то обязательно будет.
@user-rl3jm2ot1d
@user-rl3jm2ot1d Ай бұрын
Показалось чт в предидущем видео, комментатор имел в виду когда у тебя допустим 3 состояния: Loading, Loaded, Error. И например все три состояния содержат final List<User> users, тогда при жмите Ошибки у нас список просто скопирует с предыдущего состояния. И можно будет оставит список юзеров, и при этом вывести ошибку. Может я не прав) Так же можно добавить что при использование кульбитов, может начаться проблема с concurrency. Блок это разруливает очередями. Но насколько помню, в библиотеки блок, если у вас несколько on<Event1>, on<Event2>, то тут тоже можно словить проблему параллелизма, нужно все заносить в один блок on<Event> и внутри проверять уже на Event 1 и Event2. Тут кейс в том, то каждый имеет свою очередь, но между собой они складываются. Почему так решили написать в библе ХЗ,. Есть альтернативная бибика где уже на стримах блок который с елдами, там такого нет. Поправьте если не прав.
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
По поводу состояний - такой вариант тоже может быть, но он влечет за собой кучу ненужного обновления полей у состояний. Если бизнес-логика не требует отображения подробных ошибок или работы с аналитикой (когда мы трекаем каждый чих и пых в приложении), то достаточно будет обойтись состояниями только с нужными полями. Да, про трансформеры тоже нужно было рассказать. Это не совсем очевидная проблема, особенно на маленьких экранах, но она все же встречается и порой не всегда можно уловить, откуда ноги растут.
@alexatom4342
@alexatom4342 Ай бұрын
В чем отличие полноценного Bloc от Cubit?
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Отдельное видео про Cubit: kzbin.info/www/bejne/eabEloSAd8h1j6M. По-сути Cubit - это BLoC без событий. Есть стрим состояний, но все действия в кубитах происходят через обращение к методам, а не вызову событий как у блоков. Это разные подходы к разработке, но за счет единого базового класса у обоих вариантов - виджеты flutter_bloc работаю с ними одинаково. Кубиты проще в реализации мелкий фичей, где нет кучи событий, и нужно вызвать 1-2 метода и подписаться на обновление состояния. Кто-то (видел такие проекты) пишет все приложение на них, но у такого подхода есть ряд недостатков, начиная от риска появления непонятной связи между методами, и заканчивая сложностью отладки таких кубитов.
@alexatom4342
@alexatom4342 Ай бұрын
@@fluttermiddlepodcast1220 Спасибо большое, за ответ!
@max96169
@max96169 Ай бұрын
Проблема документации bloc в том что там описаны только примеры из песочницы и ни одного из реальной работы.
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
В целом примеры покрывают все вопросы по разработке. Да, они не слишком сложные, но на их основе можно было понять, какой подход и какие правила авторы хотят до нас донести. Блоку уже несколько лет, и за все это время многие вопросы уже отвечены, а ошибочные реализации разобраны авторами.
@max96169
@max96169 Ай бұрын
@@fluttermiddlepodcast1220 Как же тогда авторы предлагают показывать несколько ошибок друг за другом на нескольких языках? В документации есть на это пример?
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Не так выразился. Общие подходы. Более специфические истории, да, не показаны как реализовывать.
@max96169
@max96169 Ай бұрын
@@fluttermiddlepodcast1220 Ну это самый простой пример а в документации его нету.
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Чуть-чуть запутался. Где-то можно посмотреть пример такого кейса?
@SLSRPPRO
@SLSRPPRO Ай бұрын
Твои видосы это что-то с чем-то. Будут ли видосы по get_it, riverpod и тестам?
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Риверпод просят, возможно после серии по Блоку попробую сделать аналогичное и по нему. Со всем остальным тоже в процессе возможно разберемся.
@prophet3579
@prophet3579 Ай бұрын
Спасибо большое за видео. Обязательно продолжай, очень все понятно обьясняешь!
@user-sb1or2ds6i
@user-sb1or2ds6i Ай бұрын
Артем крутые материалы , только не бросай хоты бы в телеге выпускай инфу
@user-sb1or2ds6i
@user-sb1or2ds6i Ай бұрын
Да еще в телеге отправил запрос на вступление но почему то не приняли
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Напишите, пожалуйста, t.me/robertpugovini в Телеграме.
@user-sb1or2ds6i
@user-sb1or2ds6i Ай бұрын
Привет очень полезный канал 👍, хотел спросить роудмап для джуна актуален материал или что поменялось на рынке ? Если есть возможность напишешь еще материал роудмап для джуна
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Видео, которые записаны год назад, актуальны. Другие роадмапы могут быть уже устаревшими, но от Зотьева и roadmap.sh еще годные.
@nevermore6886
@nevermore6886 Ай бұрын
Ты всегда ищешь работу именно на hh и подобных биржах? И как относишься к поиску работы в тг, что думаешь? Спасибо за видео!
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Есть Телеграм-канал t.me/dartlang_jobs, заглядываю туда чаще, чем на HH. Там меньше описание вакансии, моментальная связь с рекрутером, но не всегда понятно, актуально ли. Ну и о компании тоже не часто информацию пишут, если это важно.
@nevermore6886
@nevermore6886 Ай бұрын
Понял, спасибо!
@azatchorekliyev1045
@azatchorekliyev1045 Ай бұрын
Приветствую!! Спасибо за видео. Подскажи пожалуйста на 14:12, я правильно понимаю: Представим у нас с юзеров 100+ (уже после нескольких пагинаций) загруженные айтемы уже в ListView уже = всё ок. И в моменте следующей пагинации интернет отваливается и мы показываем error. То на 14:12 наш Стейт отдаст error, но также потеряет юзеров? После отображения ошибки и при след. успешной пагинации вниз потеряем старых юзеров? Будем снова по новой юзеров загружать? Почему не сделать внутри sealed класса - users - error - isLoading и также пользоваться стейтами отдельными ??🧐🧐 Интересует твоё мнение и как на реальном проекте при таком требовании: «не терять юзеров» и «показывать алертом - error». Как бы ты написал код ?) Спасибо за ответ, заранее!😉
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Да, для пагинации лучше добавить дополнительные поля. Скролл будет тригеррить событие на подгрузку новой пачки данных, ну а там уже после ответа и будет вызываться emit либо с обновленным списком, либо с добавленной ошибкой. На реальных проектах как раз так и делается. Показываем список чего-либо, и во время скролла подгружаем новые айтемы (и если есть, что грузить, показываем какой-нибудь лоадер в виде шиммера). Даже не вспомню, встречал ли требования для приложения, когда на каждую ошибку нужно все грузить заново.
@itzyamangeldievgg542
@itzyamangeldievgg542 Ай бұрын
Можешь ли рассказать про архитектуру в продакшн проектах? Какая она, какие есть и примеры? (Нормальные примеры, с кодом, а не два три слова) Был бы очень благодарен Видос топ
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
Помимо Блока, есть еще и общая архитектура, деление на фичи или отдельные модули, DI, и дополнительные решения для проекта (которые могут быть уникальны только для него). Нужно будет поискать большой открытый проект, чтобы уже на его примерах рассказать об особенностях.
@SLSRPPRO
@SLSRPPRO Ай бұрын
Продолжай в том же духе бро
@elkaigolka7349
@elkaigolka7349 2 ай бұрын
Не останавливайся !!!!!
@FlutterForDev
@FlutterForDev 2 ай бұрын
спасибо за рекомендацию)
@aptigroznensky3970
@aptigroznensky3970 2 ай бұрын
Только одна проблема, Джунов очень много, а ваканский почти нет
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 Ай бұрын
С вакансиями для младших разработчиков всегда было +- одинаково плохо. Года 3-4 назад их было больше, но в то же время и количество кандидатов было тоже большим. Если мы говорим про работу в офисе - то тут больше всего вакансий в столицах, если же смотреть что-то удаленное, то там в разы больше конкуренции.
@prophet3579
@prophet3579 2 ай бұрын
А какой у тебя опыт работы? Интересно пишут ли в LinkedIn только мидлам-сеньорам , или же джун тоже имеет шанс
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 2 ай бұрын
Миддлам и сеньорам пишут точно, за последние несколько лет ничего не изменилось. С младшими разработчиками все намного сложнее, но можно завести страницу и следить за предложениями на рынке.
@user-kc6ju9ow4q
@user-kc6ju9ow4q 2 ай бұрын
Достаточно спамная помойка, каждый пишет тонну постов на любой чих. Так и не понял, зачем мне нужно там быть, если бы я был какой-то ахеренный специалист, которого ищут все, но не могут найти. А так, или тебя какой-то знакомый пригласит (не рандомы с линка), или сам отклик кинешь, тогда можно получить нормальное место.
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 2 ай бұрын
У меня около 300 контактов, и постов там действительно много. Но я не читаю их все, в основном либо отвечаю на сообщения, либо добавляю кого-то по запросу. Никогда не знаешь, что тебе сможет предложить рекрутер - у них постоянно появляются новые и интересные вакансии, и пишут они, как правило, сначала только контактам из своей наработанной базы соискателей.
@gibraterisov3717
@gibraterisov3717 2 ай бұрын
Ждем пример заполнения linkedin 👍
@user-lo5nm4ov8l
@user-lo5nm4ov8l 2 ай бұрын
Абсолютно поверхностно. Но я сам мидл, наверное кому то полезно будет.
@templeoflunacy
@templeoflunacy 2 ай бұрын
Отличные видео, чувствуется что автор прорабатывает тему и соответственно раскрывает её со всех сторон. Как всегда спасибо большое <3
@user-co8rp5ju8h
@user-co8rp5ju8h 3 ай бұрын
Пересмотрел много видосиков, твое объяснение Bloc концепции одно из лучших. Стало намного понятнее.
@fluttershyIT
@fluttershyIT 3 ай бұрын
Hive же заброшен, разве нет?
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 3 ай бұрын
Да, заброшен. Авторы сейчас делают Isar, там есть очереди и другие фичи, которые в Hive отсутствуют. На многих проектах Hive до сих пор в каком-то виде присутствует, но это относится по большей части к легаси уже.
@user-pc2pd6lv9n
@user-pc2pd6lv9n 3 ай бұрын
Дякую за твою роботу!
@network_rider
@network_rider 3 ай бұрын
Круто. Благодарю за материал , скажите пожалуйста у вас есть где нибудь подкаст или видео об архитектурах - просто во многих гайдах это само собой типо вот тут папка di, здесь у нас core , здесь model и другое . Было бы круто , если было бы такое видео с объяснением зачем это нужно и как работает . А так спасибо за ваши старания !
@fluttermiddlepodcast1220
@fluttermiddlepodcast1220 3 ай бұрын
Попробую что-нибудь придумать, тема действительно мало где раскрывается.
@user-pc2pd6lv9n
@user-pc2pd6lv9n 3 ай бұрын
Сразу видно что обновил технику)
@user-pc2pd6lv9n
@user-pc2pd6lv9n 3 ай бұрын
Сделай, пожалуйста, видео "как нужно делать, а как не нужно"