Привет! На связи Flutter Dev Podcast и его создатель и ведущий — Евгений Сатуров.
Вместе с коллегами из Flutter-комьюнити мы делаем подкаст про Flutter. Первый эпизод вышел 29 января 2019 года. С тех пор каждый месяц мы приглашаем коллег из мира Flutter и других сфер IT: обсуждаем новости, события, технические нюансы, даём советы из боевого опыта — в общем, смотрим на Flutter с разных ракурсов.
Как и зачем мы делаем подкаст, я подробно рассказал на vc.ru. В этой статье я сделал обзор самых интересных и популярных эпизодов Flutter Dev Podcast.
![](https://habrastorage.org/r/w1560/webt/ae/d9/mq/aed9mqac6w2qg3qvzgiyskzxmeg.png)
Во Flutter я пришел из Android: узнал о новой технологии в кулуарах конференции от Звиада Кардавы, Developer Relations из Google Russia, который потом стал первым гостем нашего подкаста. Идея создать СМИ про Flutter возникла потому, что мы одни из первых в стране начали что-то делать на этом фреймворке: ниша была свободна.
Flutter Dev Podcast я запустил с коллегой Артёмом Зайцевым — мы вместе работаем в Surf. На тот момент мы практически ничего не знали про Flutter, и, можно сказать, росли вместе с подкастом. Параллельно с подкастом развивали Flutter в Surf. Теперь у нас целый Flutter-отдел — в нём работает 13 человек. Мы с ребятами ведём публичный репозиторий SurfGear на GitHub, где выкладываем всякие полезности для разработки на Flutter: набор библиотек, стандартов, инструментов.
Спасибо Google и лично Екатерине Винниченко и Звиаду Кардаве за поддержку нашего подкаста и за приглашение сделать обзор выпусков в блоге Google.
![](https://habrastorage.org/r/w1560/webt/iv/zw/s7/ivzws7o4gu6dgojjrho4msrqst0.png)
#19 Яндекс.Про
Геннадий Евстратов: «Глобальная цель — сделать громадного франкенштейна, в котором процент Flutter будет нарастать, нарастать, нарастать, и можно будет просто взять маленькой лопаточкой Android-код, вышвырнуть его и оставить просто Flutter-приложение».
Команда Flutter-разработчиков из Яндекса — постоянные гости подкаста. В ранних выпусках они рассказывали о Яндекс.Таксометре — это, кстати, тоже попало в наш обзор. Теперь Яндекс.Таксометр переродился в Яндекс.Про. iOS версия написана чисто на Flutter, а Android версия — это гибрид: чисто Flutter версия ещё не догнала функциональность Android версии, поэтому выкидывать её пока нельзя.
Гости из Яндекса рассказывают, почему и в каком виде проникает Flutter в проекты компании: фреймворк уже используют для отдельных модулей в Яндекс.Лавке, Яндекс.Такси, Яндекс.Go. Говорят о том, что мешает перейти целиком на Flutter прямо сейчас, какие проблемы вскрылись при работе с Fish Redux из-за масштабирования и через что нужно будет пройти разработчику, чтобы интегрировать Flutter в нативное приложение.
![](https://habrastorage.org/r/w1560/webt/zo/pr/p9/zoprp9bliaxwbpowx4wezwlu53u.png)
#17 Flutter Day 2020
Chris Sells: «Вы всегда можете написать нативный код в своём приложении или даже создать собственный плагин. Если вы напишете собственный плагин, и у нас такого нет, — пожалуйста, поделитесь им с миром. Именно так растёт экосистема Flutter».
Это во многом необычный выпуск: впервые часть подкаста мы вели на английском и впервые сделали онлайн-трансляцию на Youtube.
В гости к Flutter Dev Podcast пришёл Chris Sells — продакт менеджер из Google: вместе с Flutter-командой он занимается развитием Flutter. Обсудили разное: возможность одновременно дебажить на большом количестве устройств и эмуляторов, откуда появился Dash — символ Flutter, какие проблемы у Flutter-команды есть в режиме удалённой работы.
Chris рассказал, как будет внедряться Null safety и что сильнее всего влияет на архитектуру приложения (и это не выбор State management). Вы узнаете, будет ли во Flutter свой Jetpack, почему из ранних версий Dart убрали Reflection API и добавят ли его обратно, сделают ли поддержку data value объектов. Eщё ведущие обсудили с Chris компиляцию Flutter-приложений на процессоры Arm в новых устройствах от Apple, что мешает выпустить альфа-версию Flutter с поддержкой сборки приложений для Windows и Linux и будет ли во Flutter динамическая загрузка кода.
![](https://habrastorage.org/r/w1560/webt/en/88/sh/en88shc7sl7maw002nqshd3q2pw.png)
#16 Meduza
Борис Горячев: «Я встретил сопротивление, которое я всегда встречаю у нативных разработчиков. Когда они слышат что-то про кроссплатформу, они сразу встают в позу, говорят, что это отстой полный, что всё плохо работает, всё медленно и вообще отстой. У них аргументы примерно такие:
— А что если тебе надо будет показать вот это, вот это, вот это?
— Но нам не надо будет это показать.
— Нет, а что если надо будет?
— Очень вряд ли.
— Ну плохой перформанс!
— Ну вроде как нет.
— Нет, ну плохой, на нативе будет быстрее».
Новое приложение Meduza написано на Flutter с нуля. В 16 выпуске Flutter Dev Podcast CTO Meduza Борис Горячев рассказывает, зачем Meduza это надо. Начинаем с истоков: обсуждаем, почему в 2014 провалилась концепция mobile first, говорим про непростые отношения с нативными разработчиками, удивительный мир медиа-разработки, игры со шрифтами, тяготы работы с WebView и Backend Driven UI. А ещё Борис отвечает на претензии Артемия Лебедева.
Подробный пересказ выпуска Flutter Dev Podcast с Борисом Горячевым
![](https://habrastorage.org/r/w1560/webt/vi/g6/lc/vig6lcn3sfimjtzps7g8vwazqyc.png)
#15 Flide — IDE на Flutter
Андрей Лесницкий: «Я начал продукт для себя, чтобы повысить свою продуктивность. Если это повышает мою продуктивность, это может повысить продуктивность и всех разработчиков в экосистеме Flutter».
Андрей Лесницкий из Минска пишет среду разработки на Flutter. Он вдохновился Android Studio и VS Code, и старается взять из них всё лучшее — но хочет сделать IDE по-своему. Почему для проекта он выбрал Flutter: это челлендж или специальная задумка? Каким продукт задумывался и каким получился?
В выпуске Андрей рассказывает, как ему пришла в голову эта идея, с какими основными вызовами он столкнулся и в каком состоянии проект сегодня.
![](https://habrastorage.org/r/w1560/webt/ph/sc/ae/phscaennp0b1gp4z7xwel3qopbk.png)
#11 Яндекс.Такси
Геннадий Евстратов: «Служба безопасности сказала: „React Native — только через их труп“».
Команда Яндекс.Такси делает на Flutter «программный комплекс для службы такси» — приложение Яндекс.Таксометр. В выпуске они рассказывают, почему сначала пилили проект на React Native, но потом перешли на Flutter, зачем сотрудники Яндекса таксуют по ночам и за счёт чего приложение на Flutter делается в два с половиной раза быстрее, чем на Android. А ещё — про иероглифы в документации Fish redux, интеграцию Яндекс Map Kit и собственный виджет пак.
![](https://habrastorage.org/r/w1560/webt/ef/pr/xx/efprxxi5v1jrmr5habyhm0l2ppw.png)
#9 CI/CD — Jenkins, Bitrise, Codemagic
Михаил Токарев: «Когда мы разговаривали с Flutter Team по поводу CI/CD, они очень чётко сказали: „Мы хотим видеть CI, которым могла бы пользоваться даже моя бабушка“. С этой установкой мы и начали делать Codemagic».
Вместе с CTO Codemagic разбирались, зачем нужен CI/CD, в какой момент становится понятно, что без него не обойтись, и чем чреваты локальные сборки. Сравнивали Jenkins, Bitrise и Codemagic по всем параметрам, до которых смогли дотянуться: возможности, ограничения, стабильность, кастомизация, цены. Выясняли, откуда появился Codemagic и почему он позиционируется именно как CI/CD для Flutter, а не для всего подряд, в чем его отличие от остальных инструментов и какая компенсация положена пользователю, если сборка упала по вине инструмента.
![](https://habrastorage.org/r/w1560/webt/gu/w4/xr/guw4xrobu5rh0jih_eny6ijvdzk.png)
#7 Всё про кроссплатформу
Максим Сальников: «Сторы из нашего процесса просто выпадают, они нам просто не нужны. Это обычное веб-приложение, которое можно при желании взять и установить на устройство».
Максим Биянов: «Xamarin подошёл к максимальной матюрности. К состоянию, когда все основные проблемы решены и началось экстенсивное развитие. Есть фишки, которые малозаметны. Сейчас внимание уделяется нативному iOS».
Александр Фёдоров: «React Native это промежуточное решение между нативным и вебом. Нативное получается быстрее, веб медленнее. Что-то посередине — это React Native. Наверно, самый большой плюс — что он пишется на JS. JS-разработчиков много, вход в разработку быстрый. React тоже не очень сложный».
Артём Зайцев: «Ключевое отличие Flutter от того же React или Xamarin — то, что он имеет собственный движок под капотом. И не использует нативные элементы, а просто рисует такие же».
Роман Яцына: «Кotlin Native в целом — тот же самый Kotlin, просто зарестрикченный. Сейчас очень сложно найти человека, который согласился бы писать на Java. Многие прям уходят из своих компаний, потому что там нет Kotlin».
Александр Ефременков: «Давайте начнём с того, что это С++. С++ не стоит изучать, если ты не хочешь копаться с тем, как аллоцируется память, как она работает, и пытаться вникнуть в близкую работу с железом».
React Native, Xamarin, PWA, QT, C++, Kotlin Native, Flutter… Кроссплатформа — достаточно общее слово, за которым кроется много разных технологий.
Для чего стоит брать технологию, область применения, порог вхождения, плюсы и проблемы — в этом выпуске мы обсудили критерии при выборе технологий для своего стека.
![](https://habrastorage.org/r/w1560/webt/m0/p7/_q/m0p7_qevkzitikqi4iraxgmjif8.png)
#6 Асинхронность
Евгений Кот: «Чтобы понимать стримы, нужно понимать, как сантехника работает».
Есть async/await, Future API, Stream API, есть метод Compute, есть даже RXDart. Как из этого многообразия понять, что из этого надо использовать, а что нет. Что делать со всей этой асинхронщиной, если вы пришли из мира iOS или Android. Почему изолят — как пирожок с полки, и как Flutter обрабатывает асинхронные операции — если Dart однопоточен.
![](https://habrastorage.org/r/w1560/webt/91/_z/ng/91_znglb9yeulometca-pdiibbu.png)
Слушать выпуск #5 Dart VM
Вячеслав Егоров: «Начать можно с того, Dart VM название — оно немножко неправильное. Правильно его называть Dart Runtime, потому что он не всегда из себя представляет виртуальную машину. Люди, которые представляют себе виртуальную машину, они представляют себе, что внутри какой-то байт-код исполняется. А более правильно, наверно, это все-таки называть Dart Runtime».
Вячеслав Егоров, разработчик Dart VM, рассказывает, почему Flutter написан на Dart, какую чёрную магию применяет Hot reload, в чем особенности Garbage collector. Про компиляцию из 90-х, прогретые функции и Flutter-веб. Как соотносятся изоляты в Dart и многопоточность, во что компилируется Flutter-приложение в релизной сборке и что у Flutter с реверс-инжинирингом.
Все выпуски Flutter Dev Podcast на Soundcloud
Вместе с коллегами из Flutter-комьюнити мы делаем подкаст про Flutter. Первый эпизод вышел 29 января 2019 года. С тех пор каждый месяц мы приглашаем коллег из мира Flutter и других сфер IT: обсуждаем новости, события, технические нюансы, даём советы из боевого опыта — в общем, смотрим на Flutter с разных ракурсов.
Как и зачем мы делаем подкаст, я подробно рассказал на vc.ru. В этой статье я сделал обзор самых интересных и популярных эпизодов Flutter Dev Podcast.
![](https://habrastorage.org/webt/ae/d9/mq/aed9mqac6w2qg3qvzgiyskzxmeg.png)
Во Flutter я пришел из Android: узнал о новой технологии в кулуарах конференции от Звиада Кардавы, Developer Relations из Google Russia, который потом стал первым гостем нашего подкаста. Идея создать СМИ про Flutter возникла потому, что мы одни из первых в стране начали что-то делать на этом фреймворке: ниша была свободна.
Flutter — это технология кроссплатформенной разработки приложений под iOS, Android, веб и десктоп от Google.
Flutter Dev Podcast я запустил с коллегой Артёмом Зайцевым — мы вместе работаем в Surf. На тот момент мы практически ничего не знали про Flutter, и, можно сказать, росли вместе с подкастом. Параллельно с подкастом развивали Flutter в Surf. Теперь у нас целый Flutter-отдел — в нём работает 13 человек. Мы с ребятами ведём публичный репозиторий SurfGear на GitHub, где выкладываем всякие полезности для разработки на Flutter: набор библиотек, стандартов, инструментов.
Спасибо Google и лично Екатерине Винниченко и Звиаду Кардаве за поддержку нашего подкаста и за приглашение сделать обзор выпусков в блоге Google.
Выпуски Flutter Dev Podcast: от свежих к ранним
![](https://habrastorage.org/webt/iv/zw/s7/ivzws7o4gu6dgojjrho4msrqst0.png)
«Целая платформа для заработка всевозможных людей»
#19 Яндекс.Про
Геннадий Евстратов: «Глобальная цель — сделать громадного франкенштейна, в котором процент Flutter будет нарастать, нарастать, нарастать, и можно будет просто взять маленькой лопаточкой Android-код, вышвырнуть его и оставить просто Flutter-приложение».
Команда Flutter-разработчиков из Яндекса — постоянные гости подкаста. В ранних выпусках они рассказывали о Яндекс.Таксометре — это, кстати, тоже попало в наш обзор. Теперь Яндекс.Таксометр переродился в Яндекс.Про. iOS версия написана чисто на Flutter, а Android версия — это гибрид: чисто Flutter версия ещё не догнала функциональность Android версии, поэтому выкидывать её пока нельзя.
Гости из Яндекса рассказывают, почему и в каком виде проникает Flutter в проекты компании: фреймворк уже используют для отдельных модулей в Яндекс.Лавке, Яндекс.Такси, Яндекс.Go. Говорят о том, что мешает перейти целиком на Flutter прямо сейчас, какие проблемы вскрылись при работе с Fish Redux из-за масштабирования и через что нужно будет пройти разработчику, чтобы интегрировать Flutter в нативное приложение.
![](https://habrastorage.org/webt/zo/pr/p9/zoprp9bliaxwbpowx4wezwlu53u.png)
«Я много чем занимаюсь во Flutter-команде, но в первую очередь забочусь, чтобы внешние разработчики получали хороший опыт»
#17 Flutter Day 2020
Chris Sells: «Вы всегда можете написать нативный код в своём приложении или даже создать собственный плагин. Если вы напишете собственный плагин, и у нас такого нет, — пожалуйста, поделитесь им с миром. Именно так растёт экосистема Flutter».
Это во многом необычный выпуск: впервые часть подкаста мы вели на английском и впервые сделали онлайн-трансляцию на Youtube.
В гости к Flutter Dev Podcast пришёл Chris Sells — продакт менеджер из Google: вместе с Flutter-командой он занимается развитием Flutter. Обсудили разное: возможность одновременно дебажить на большом количестве устройств и эмуляторов, откуда появился Dash — символ Flutter, какие проблемы у Flutter-команды есть в режиме удалённой работы.
Chris рассказал, как будет внедряться Null safety и что сильнее всего влияет на архитектуру приложения (и это не выбор State management). Вы узнаете, будет ли во Flutter свой Jetpack, почему из ранних версий Dart убрали Reflection API и добавят ли его обратно, сделают ли поддержку data value объектов. Eщё ведущие обсудили с Chris компиляцию Flutter-приложений на процессоры Arm в новых устройствах от Apple, что мешает выпустить альфа-версию Flutter с поддержкой сборки приложений для Windows и Linux и будет ли во Flutter динамическая загрузка кода.
![](https://habrastorage.org/webt/en/88/sh/en88shc7sl7maw002nqshd3q2pw.png)
«Медиа — это тот тип активности человечества, где все постоянно идёт не так, как ты хочешь»
#16 Meduza
Борис Горячев: «Я встретил сопротивление, которое я всегда встречаю у нативных разработчиков. Когда они слышат что-то про кроссплатформу, они сразу встают в позу, говорят, что это отстой полный, что всё плохо работает, всё медленно и вообще отстой. У них аргументы примерно такие:
— А что если тебе надо будет показать вот это, вот это, вот это?
— Но нам не надо будет это показать.
— Нет, а что если надо будет?
— Очень вряд ли.
— Ну плохой перформанс!
— Ну вроде как нет.
— Нет, ну плохой, на нативе будет быстрее».
Новое приложение Meduza написано на Flutter с нуля. В 16 выпуске Flutter Dev Podcast CTO Meduza Борис Горячев рассказывает, зачем Meduza это надо. Начинаем с истоков: обсуждаем, почему в 2014 провалилась концепция mobile first, говорим про непростые отношения с нативными разработчиками, удивительный мир медиа-разработки, игры со шрифтами, тяготы работы с WebView и Backend Driven UI. А ещё Борис отвечает на претензии Артемия Лебедева.
Подробный пересказ выпуска Flutter Dev Podcast с Борисом Горячевым
![](https://habrastorage.org/webt/vi/g6/lc/vig6lcn3sfimjtzps7g8vwazqyc.png)
«Изначально я хотел сделать что-то похожее на VS Code, но лучше»
#15 Flide — IDE на Flutter
Андрей Лесницкий: «Я начал продукт для себя, чтобы повысить свою продуктивность. Если это повышает мою продуктивность, это может повысить продуктивность и всех разработчиков в экосистеме Flutter».
Андрей Лесницкий из Минска пишет среду разработки на Flutter. Он вдохновился Android Studio и VS Code, и старается взять из них всё лучшее — но хочет сделать IDE по-своему. Почему для проекта он выбрал Flutter: это челлендж или специальная задумка? Каким продукт задумывался и каким получился?
В выпуске Андрей рассказывает, как ему пришла в голову эта идея, с какими основными вызовами он столкнулся и в каком состоянии проект сегодня.
![](https://habrastorage.org/webt/ph/sc/ae/phscaennp0b1gp4z7xwel3qopbk.png)
«Мне очень понравилось быть водителем такси. Если бы тарифы были повыше, я бы переквалифицировался»
#11 Яндекс.Такси
Геннадий Евстратов: «Служба безопасности сказала: „React Native — только через их труп“».
Команда Яндекс.Такси делает на Flutter «программный комплекс для службы такси» — приложение Яндекс.Таксометр. В выпуске они рассказывают, почему сначала пилили проект на React Native, но потом перешли на Flutter, зачем сотрудники Яндекса таксуют по ночам и за счёт чего приложение на Flutter делается в два с половиной раза быстрее, чем на Android. А ещё — про иероглифы в документации Fish redux, интеграцию Яндекс Map Kit и собственный виджет пак.
![](https://habrastorage.org/webt/ef/pr/xx/efprxxi5v1jrmr5habyhm0l2ppw.png)
«CI/CD сделает всё за вас, даже если у вас нету техники от Apple»
#9 CI/CD — Jenkins, Bitrise, Codemagic
Михаил Токарев: «Когда мы разговаривали с Flutter Team по поводу CI/CD, они очень чётко сказали: „Мы хотим видеть CI, которым могла бы пользоваться даже моя бабушка“. С этой установкой мы и начали делать Codemagic».
Вместе с CTO Codemagic разбирались, зачем нужен CI/CD, в какой момент становится понятно, что без него не обойтись, и чем чреваты локальные сборки. Сравнивали Jenkins, Bitrise и Codemagic по всем параметрам, до которых смогли дотянуться: возможности, ограничения, стабильность, кастомизация, цены. Выясняли, откуда появился Codemagic и почему он позиционируется именно как CI/CD для Flutter, а не для всего подряд, в чем его отличие от остальных инструментов и какая компенсация положена пользователю, если сборка упала по вине инструмента.
![](https://habrastorage.org/webt/gu/w4/xr/guw4xrobu5rh0jih_eny6ijvdzk.png)
«Работает на всём, на чём есть экран»
#7 Всё про кроссплатформу
Максим Сальников: «Сторы из нашего процесса просто выпадают, они нам просто не нужны. Это обычное веб-приложение, которое можно при желании взять и установить на устройство».
Максим Биянов: «Xamarin подошёл к максимальной матюрности. К состоянию, когда все основные проблемы решены и началось экстенсивное развитие. Есть фишки, которые малозаметны. Сейчас внимание уделяется нативному iOS».
Александр Фёдоров: «React Native это промежуточное решение между нативным и вебом. Нативное получается быстрее, веб медленнее. Что-то посередине — это React Native. Наверно, самый большой плюс — что он пишется на JS. JS-разработчиков много, вход в разработку быстрый. React тоже не очень сложный».
Артём Зайцев: «Ключевое отличие Flutter от того же React или Xamarin — то, что он имеет собственный движок под капотом. И не использует нативные элементы, а просто рисует такие же».
Роман Яцына: «Кotlin Native в целом — тот же самый Kotlin, просто зарестрикченный. Сейчас очень сложно найти человека, который согласился бы писать на Java. Многие прям уходят из своих компаний, потому что там нет Kotlin».
Александр Ефременков: «Давайте начнём с того, что это С++. С++ не стоит изучать, если ты не хочешь копаться с тем, как аллоцируется память, как она работает, и пытаться вникнуть в близкую работу с железом».
React Native, Xamarin, PWA, QT, C++, Kotlin Native, Flutter… Кроссплатформа — достаточно общее слово, за которым кроется много разных технологий.
Для чего стоит брать технологию, область применения, порог вхождения, плюсы и проблемы — в этом выпуске мы обсудили критерии при выборе технологий для своего стека.
![](https://habrastorage.org/webt/m0/p7/_q/m0p7_qevkzitikqi4iraxgmjif8.png)
«Мобильные разработчики пришли во Flutter, посмотрели на async/await и ужаснулись»
#6 Асинхронность
Евгений Кот: «Чтобы понимать стримы, нужно понимать, как сантехника работает».
Есть async/await, Future API, Stream API, есть метод Compute, есть даже RXDart. Как из этого многообразия понять, что из этого надо использовать, а что нет. Что делать со всей этой асинхронщиной, если вы пришли из мира iOS или Android. Почему изолят — как пирожок с полки, и как Flutter обрабатывает асинхронные операции — если Dart однопоточен.
![](https://habrastorage.org/webt/91/_z/ng/91_znglb9yeulometca-pdiibbu.png)
«Все виртуальные машины действительно на одно лицо»
Слушать выпуск #5 Dart VM
Вячеслав Егоров: «Начать можно с того, Dart VM название — оно немножко неправильное. Правильно его называть Dart Runtime, потому что он не всегда из себя представляет виртуальную машину. Люди, которые представляют себе виртуальную машину, они представляют себе, что внутри какой-то байт-код исполняется. А более правильно, наверно, это все-таки называть Dart Runtime».
Вячеслав Егоров, разработчик Dart VM, рассказывает, почему Flutter написан на Dart, какую чёрную магию применяет Hot reload, в чем особенности Garbage collector. Про компиляцию из 90-х, прогретые функции и Flutter-веб. Как соотносятся изоляты в Dart и многопоточность, во что компилируется Flutter-приложение в релизной сборке и что у Flutter с реверс-инжинирингом.
Все выпуски Flutter Dev Podcast на Soundcloud