company_banner

«Flutter клёвенький — у меня только такое объяснение». Обзор лучших выпусков Flutter Dev Podcast

    Привет! На связи Flutter Dev Podcast и его создатель и ведущий — Евгений Сатуров. 

    Вместе с коллегами из Flutter-комьюнити мы делаем подкаст про Flutter. Первый эпизод вышел 29 января 2019 года. С тех пор каждый месяц мы приглашаем коллег из мира Flutter и других сфер IT: обсуждаем новости, события, технические нюансы, даём советы из боевого опыта — в общем, смотрим на Flutter с разных ракурсов.

    Как и зачем мы делаем подкаст, я подробно рассказал на vc.ru. В этой статье я сделал обзор самых интересных и популярных эпизодов Flutter Dev Podcast.




    Во 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: от свежих к ранним




    «Целая платформа для заработка всевозможных людей»


    #19 Яндекс.Про

    Геннадий Евстратов: «Глобальная цель — сделать громадного франкенштейна, в котором процент Flutter будет нарастать, нарастать, нарастать, и можно будет просто взять маленькой лопаточкой Android-код, вышвырнуть его и оставить просто Flutter-приложение».

    Команда Flutter-разработчиков из Яндекса — постоянные гости подкаста. В ранних выпусках они рассказывали о Яндекс.Таксометре — это, кстати, тоже попало в наш обзор. Теперь Яндекс.Таксометр переродился в Яндекс.Про. iOS версия написана чисто на Flutter, а Android версия — это гибрид: чисто Flutter версия ещё не догнала функциональность Android версии, поэтому выкидывать её пока нельзя.

    Гости из Яндекса рассказывают, почему и в каком виде проникает Flutter в проекты компании: фреймворк уже используют для отдельных модулей в Яндекс.Лавке, Яндекс.Такси, Яндекс.Go. Говорят о том, что мешает перейти целиком на Flutter прямо сейчас, какие проблемы вскрылись при работе с Fish Redux из-за масштабирования и через что нужно будет пройти разработчику, чтобы интегрировать Flutter в нативное приложение.





    «Я много чем занимаюсь во 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 динамическая загрузка кода.





    «Медиа — это тот тип активности человечества, где все постоянно идёт не так, как ты хочешь»


    #16 Meduza

    Борис Горячев: «Я встретил сопротивление, которое я всегда встречаю у нативных разработчиков. Когда они слышат что-то про кроссплатформу, они сразу встают в позу, говорят, что это отстой полный, что всё плохо работает, всё медленно и вообще отстой. У них аргументы примерно такие:
    — А что если тебе надо будет показать вот это, вот это, вот это?
    — Но нам не надо будет это показать. 
    — Нет, а что если надо будет?
    — Очень вряд ли. 
    — Ну плохой перформанс! 
    — Ну вроде как нет. 
    — Нет, ну плохой, на нативе будет быстрее».

    Новое приложение Meduza написано на Flutter с нуля. В 16 выпуске Flutter Dev Podcast CTO Meduza Борис Горячев рассказывает, зачем Meduza это надо. Начинаем с истоков: обсуждаем, почему в 2014 провалилась концепция mobile first, говорим про непростые отношения с нативными разработчиками, удивительный мир медиа-разработки, игры со шрифтами, тяготы работы с WebView и Backend Driven UI. А ещё Борис отвечает на претензии Артемия Лебедева.

    Подробный пересказ выпуска Flutter Dev Podcast с Борисом Горячевым





    «Изначально я хотел сделать что-то похожее на VS Code, но лучше»


    #15 Flide — IDE на Flutter

    Андрей Лесницкий: «Я начал продукт для себя, чтобы повысить свою продуктивность. Если это повышает мою продуктивность, это может повысить продуктивность и всех разработчиков в экосистеме Flutter».

    Андрей Лесницкий из Минска пишет среду разработки на Flutter. Он вдохновился Android Studio и VS Code, и старается взять из них всё лучшее — но хочет сделать IDE по-своему. Почему для проекта он выбрал Flutter: это челлендж или специальная задумка? Каким продукт задумывался и каким получился?

    В выпуске Андрей рассказывает, как ему пришла в голову эта идея, с какими основными вызовами он столкнулся и в каком состоянии проект сегодня.





    «Мне очень понравилось быть водителем такси. Если бы тарифы были повыше, я бы переквалифицировался»


    #11 Яндекс.Такси

    Геннадий Евстратов: «Служба безопасности сказала: „React Native — только через их труп“».

    Команда Яндекс.Такси делает на Flutter «программный комплекс для службы такси» — приложение Яндекс.Таксометр. В выпуске они рассказывают, почему сначала пилили проект на React Native, но потом перешли на Flutter, зачем сотрудники Яндекса таксуют по ночам и за счёт чего приложение на Flutter делается в два с половиной раза быстрее, чем на Android. А ещё — про иероглифы в документации Fish redux, интеграцию Яндекс Map Kit и собственный виджет пак.





    «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, а не для всего подряд, в чем его отличие от остальных инструментов и какая компенсация положена пользователю, если сборка упала по вине инструмента.





    «Работает на всём, на чём есть экран»


    #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… Кроссплатформа — достаточно общее слово, за которым кроется много разных технологий.

    Для чего стоит брать технологию, область применения, порог вхождения, плюсы и проблемы — в этом выпуске мы обсудили критерии при выборе технологий для своего стека.





    «Мобильные разработчики пришли во Flutter, посмотрели на async/await и ужаснулись»


    #6 Асинхронность

    Евгений Кот:  «Чтобы понимать стримы, нужно понимать, как сантехника работает». 

    Есть async/await, Future API, Stream API, есть метод Compute, есть даже RXDart. Как из этого многообразия понять, что из этого надо использовать, а что нет. Что делать со всей этой асинхронщиной, если вы пришли из мира iOS или Android. Почему изолят — как пирожок с полки, и как Flutter обрабатывает асинхронные операции — если Dart однопоточен. 





    «Все виртуальные машины действительно на одно лицо»


    Слушать выпуск #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
    Google Developers
    Build anything with Google

    Комментарии 8

      0
      На ютьюб бы подкасты дублировать… Flutter уже умеет в десктоп, можно в прод тащить?
        0
        Под винду только на днях еще альфа вышла, так что наверно только если для чего то простого под десктопы.
        0
        Хотелось бы услышать подробный разбор преимуществ Dart, на котором написан Флаттер, над js, учитывая абсолютное превосходство последнего в сырой скорости:

        benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/node-dart.html
          0
          С точки зрения концепции выполнения — идентичны.
          Dart и JS однопоточный, асинхронный.

          Что касается преимуществ — типы из коробки (не TypeScript vs Flow, а единое правило).

          Также VM Dart умеет в AOT — JS нет.

          Почему именно Dart? Потому что он как и Flutter принадлежит Google.

          Dart все же более строгий и сколько схожестей — столько и различий.
          В JS на лету можно менять прототип (считай родителя), мешать объекты, в Dart с этим строже.

            –1
            В дополнение к вышесказанному, Dart компилируется в нативный код, что хотя бы с точки зрения реверса даёт какую-никакую безопасность. js никогда не будет достаточно безопасен для проекта, где это имеет большое значение.
              0
              Я говорил про веб, стоило уточнить. Судя по тому, что я вижу, для этого таргета Дарт компилируется в js.

              dart.dev/platforms

              dart.dev/tools/dart2js
                +1
                Хех, не устаю повторять в разных чатах и под статьями что флаттеру в веб лезть смысл есть на мой взгляд разве что по остаточному принципу. А целить стоит именно туда где он сильнее, мобилки и десктопы.
                  0
                  Тем более. Flutter в первую очередь это мобильная разработка.

                  Хоть он и целится в максимальную кросс-платформу, но все-же главное направление — мобилки.

                  Остальное — приятное дополнение, исходя из текущего уровня развития платформы.

                  А потому если сравнивать Web — то JS выигрывает, так как он более наивен для браузера, а в Dart приложении на выходе будет тот же JS.

                  А в мобильной разработке все иначе.
                  React Native не вывозит из-за ограничений JS. И из-за них JS не может в AOT. А Flutter быстр именно в релизной сборке, так как в debug там JIT. Это Hot Reload и тормоза в режиме разработчика.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое