Кроссплатформенный фреймворк Flutter появился в 2017 году. С тех пор он стал одним из самых популярных инструментов для разработки мобильных приложений. Мы в Friflex работаем с Flutter с первого релиза, следим за его развитием и каждый год проводим большую конференцию о кроссплатформенной разработке — CrossConf. В этой статье вспоминаем историю фреймворка. А еще делимся, как с ним познакомились наши разработчики.

Что такое Flutter

Flutter — фреймворк с открытым исходным кодом. Он позволяет создавать мобильные приложения под Android и iOS, веб-приложения, а также настольные приложения под Windows, macOS и Linux. Разрабатывает и развивает фреймворк компания Google. 

У Google нет официальной версии происхождения названия фреймворка. Может быть, оно отсылает к песне группы The Beatles "Paperback Writer". В ней есть строчка "And if you read this, then I'll be flutterin' by", «если ты это читаешь, то я буду рядом». А может, один из разработчиков просто предложил это название, и оно всем понравилось.

В переводе с английского to flutter значит «порхать» или «трепетать». Это отражает основную идею фреймворка — быстрая и плавная работа приложений благодаря анимированным пользовательским интерфейсам.

Как развивался Flutter

2015: Секретный проект Google 

Кроссплатформенные фреймворки в 2015 уже были. Но React Native не подходил для проектов с тяжелой и сложной графикой и анимацией. QT Mobile не пользовался популярностью, а Ionic и PhoneGap использовали для визуализации приложений веб-технологии и совсем не применяли нативные компоненты. Такой подход сильно снижал производительность.

Google стремилась найти способ разрабатывать красивые приложения, которые бы без проблем работали и на iOS, и на Android. Компания без промедлений перешла от теории к практике и запустила секретный проект под кодовым названием Sky. 

Команда проекта опубликовала Sky SDK и заявила задачу — добиться высокой скорости и уровня интеграции с web. Разработчики планировали, что Sky сможет выдавать картинку с частотой 120 кадров в секунду. Тогда дисплеи смартфонов еще не могли работать с такой скоростью — максимум с 60 кадрами в секунду.

Разработчики показали приложение, которое рисовало кадр за 1,2 миллисекунды. Другим приложениям для этого требовалось 8 миллисекунд.

2017: Flutter выходит из тени

В 2017 году вышла альфа-версия Flutter, пока все еще под именем Sky. Она работала только на Android и была вдохновлена движком Skia. Особенность Skia в том, что он абстрагируется от графических API, специфичных для платформы, и позволяет рисовать сложные элементы интерфейса и любые 2D-сцены со скоростью 60 кадров в секунду. 

А еще в 2017 вышел первый коммерческий продукт на Flutter — приложение к бродвейскому мюзиклу «Гамильтон». По словам команды, фреймворк позволил разработать приложение за три месяца.

В приложении можно было просматривать фото и видео, использовать фильтры в стиле «Гамильтона», принимать участие в розыгрыше билетов, покупать товары бренда и петь в караоке песни из мюзикла. 

Фанаты «Гамильтона» были в восторге от приложения. Кстати, оно до сих пор доступно на Android и iOS.

2018: Flutter 1.0

В 2018 году вышла первая стабильная версия фреймворка — Flutter 1.0. Одной из ключевых характеристик релиза стала скорость загрузки и работы приложения. Разработчики увеличили ее за счет внедрения графического движка Skia 2D.  

Еще во Flutter 1.0 появилась знаменитая «горячая перезагрузка». Эта функция автоматически обновляет приложение в браузере при сохранении изменений в исходном коде. Она позволяет разработчикам быстро увидеть результаты изменений. Самостоятельно перезагружать страницу не нужно. 

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

2019: Больше платформ

Flutter 1.12 стал пятым стабильным релизом после версии 1.0. В нем было использовано 1,905 пул-реквестов от 188 разработчиков. 

Команда добавила поддержку веб-технологий в бета-версии. Появились стабильные API для интеграции с Java, Kotlin, Objective-C и Swift. Функция Add-to-App позволила интегрировать Flutter в нативные iOS и Android-приложения.

В этом же году на конференции Google I/O New York Times представила KENKEN — одну из самых популярных игр на Flutter c поддержкой мобильных и веб-платформ. 

Через год с Flutter познакомился наш Flutter-разработчик Мурат Насиров.

«Flutter-код я впервые увидел в начале 2020 года. Тогда подумал, что это какая-то ни на что не похожая ерунда. Казалось странным использовать классы с множеством вложений других классов, да еще и всего один язык, не считая нативных в некоторых ситуациях. 

Начиная свой путь в Android-разработке, я столкнулся с некоторыми нюансами верстки через xml-файлы, хотелось сделать переиспользуемый список элементов. Я поломал какое-то время голову, но так ничего и не получилось. Я снова вспомнил о Flutter. Посмотрел ролики от codeandart main про язык Dart. 

После опыта с Java и JavaScript он показался мне простым. Я попробовал написать приложение на Dart. Мне понравилась простота написания интерфейсов. Код верстки — как на ладони, видно, за что отвечает каждый элемент интерфейса. 

Flutter Inspector позволяет удобно переключаться на нужный участок кода нажатием на элемент верстки в эмуляторе. Набравшись опыта, я начал искать работу, связанную с Flutter-разработкой».

2021: Мультиплатформенность и монетизация

В 2021 году команда Google расширила возможности Flutter как мультиплатформенного фреймворка. Версия Flutter 2.8 поддерживала шесть платформ: iOS, Android, web, macOS, Windows и Linux.

В релизе появилась возможность монетизировать Flutter-приложения при помощи Google Mobile SDK. Появились пять рекламных форматов: баннеры, полноэкранная реклама, видео, нативная реклама и реклама при запуске приложения. Также Flutter-приложения с этого момента можно было интегрировать с AdMob и Ad Manager. Появилась возможность размещать рекламу от посредников.

В 2021 году на pub.dev любой разработчик уже мог добавить собственный плагин, совместимый с Flutter. На момент выхода релиза 2.8 в репозитории находилось более 20 тысяч пакетов, которые можно было использовать для Flutter-проектов. А еще в это время впервые узнала о Flutter разработчик Friflex Анна Ахлестова.

«В конце 2021 года я пробовала себя в Android-разработке. Друг познакомил меня с Flutter. На меня произвела впечатление возможность разрабатывать продукт сразу под несколько платформ. Я начала изучать язык и фреймворк. Dart показался мне проще, чем Java. И я полностью перешла на сторону Flutter. Потом были часы обучения, первые pet-проекты, поиск работы и собеседования…»

2022: Поддержка Windows, macOS, Linux и игры

В релизе Flutter 2.10 разработчики сделали акцент на стабильной версии поддержки Windows. Появились улучшения для обработки текста, клавиатуры и сочетаний клавиш, интеграции в Windows с поддержкой аргументов командной строки, глобальным вводом текста и другие.

В Flutter 3 появился Flutter Casual Games Tool Kit с шаблонами, учебниками и документацией для разработки казуальных игр. Разработчики показали стартовый шаблон игры с главным меню, страницей настроек, работой со звуком и графикой. Его можно было адаптировать под свою идею. 

Casual Games Toolkit поддерживал Apple Game Center и игровые сервисы Google Play. Это значит, что разработчики теперь могли интегрировать в свой проект виджеты этих сервисов, например, таблицу лидеров.

Еще в Flutter 3 появилась стабильная поддержка macOS и Linux.

«Это очень важное обновление: теперь развитие Flutter выйдет далеко за пределы мобильной разработки. После этого не осталось сдерживающих факторов для разработки приложений на Flutter для десктопов», — Юрий Петров, Flutter Team Lead, Friflex.

В последнем релизе 3.19 появилась бета-версия Google AI Dart SDK. Она позволяет встраивать в Flutter-приложения функции на основе моделей генеративного ИИ семейства Gemini. Gemini API можно использовать для детального управления анимацией виджетов. Это повышает качество взаимодействия с пользователем. Узнать больше о работе с Google AI Dart SDK можно в кратком руководстве

Кроме того, релиз 3.19 позволяет разрабатывать приложения для еще одной платформы — Windows Arm64.

Планы на будущее

В 2023 году экосистема Flutter выросла на 26% — до 48 000 пакетов 

в конце декабря. В январе 2024 года у Pub.dev было более 700 000 активных пользователей в месяц. На этот год у команды разработчиков фреймворка большие планы. Например:

  • интеграция AR, чтобы сделать приложения более интерактивным;

  • поддержка Flutter-приложений для Fuchsia OS — новой операционной системы от Google;

  • пересмотр дизайна UI/UX;

  • поддержка производительности.

Что почитать про Flutter 

  1. Документация Flutter — официальная страница фреймворка с актуальной информацией.

  2. Официальный youtube-канал Flutter — видео разработчиков из команды фреймворка.

  3. GitHub-репозиторий Flutter — облачная платформа для хостинга IT-проектов на Flutter и совместной разработки.

  4. Документация Dart — официальная страница языка программирования.

  5. Сообщество Flutter на Medium — большое англоязычное сообщество Flutter-разработчиков.

  6. Dart&Flutter — телеграм-чат про Dart. 

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


  1. ParaMara
    09.04.2024 09:39

    • поддержка Flutter-приложений для Fuchsia OS — новой операционной системы от Google;

    А она точно ещё существует, это новая операционная система от Google? Пока Гугол пытался выбраться с телефонов - и Фуксия и Флаттер имели смысл. Но от iPad было получено по морде. Хромбуки вне обучения американского простонародья успехов не добились. Ежегодные призывы на I/O "поддерживать устройства с большими экранами" сменились на маниакальное повторение AI-AI-AI... На этом фоне трения между Гуглом и ведущими разработчиками Флаттера особенно тревожны.

    Flutter — фреймворк с открытым исходным кодом.

    Ну и? Один из 100500 таких же? Аналитики меня поумнее изучали причины популярности Флаттера и пришли к выводу, что Реакт Натив - он натив, что в сочетании с кросс-платформой гарантирует бесконечное количество подводных камней и трудностей. А Флаттер - свой собственный, рисует на всех устройствах интерфейс пиксель в пиксель, что позволяет хорошо работать но ограничивает область применения. Стоило порадоваться за Флаттер, как в роадмапе на 2023 год было сказано, что Флаттер стал лучшим фреймворком с переносимым интерфейсом, что совпадало с мнением аналитиков, и теперь задача - сделать его the best framework ever, если правильно помню, что есть путь к погибели. Но похоже, что Флаттер имеет шанс, إن شاء الله, погибели избежать ибо в роадмапе на 2024 год такого уже нет.

    Версия Flutter 2.8 поддерживала шесть платформ: iOS, Android, web, macOS, Windows и Linux.

    Уж не та ли это версия в которой в списке поддерживаемых платформ в кучу были смешаны релиз, альфа и бета? Может и не точно 2.8, не помню. Мотивация заявленная - так будет способствовать популяризации. Мотивация ИМХО - ужас от действий Эппл фактически объединившей macOS и iPadOS в одну платформу и сделавшей цену входа на неё $320 = iPad + Playgrounds 4. Что угрожало отсечением и Гугла и Мелкомягких от будущего. Отсюда и всплеск кросс-платформы везде где можно и поддержка Андроид в Окнах.

    Беда не пришла, ИМХО не надо было с разработанного в Playgrounds налог $100 драть - за $320 без вариантов, а за $420 комп и Андроид Студию абы как вытянет. Что там с поддержкой Андроид в Окнах? Уместна ли аналогия с Флаттером?

    Планы на будущее

    Уж не в роадмапе ли эти планы?

    В 2023 году экосистема Flutter выросла на 26% — до 48 000 пакетов 

    А экосистема javaScript (npm) до 2 100 000 пакетов... Мой, заведомо неверный и вводящий в заблуждение примитивный тест, о котором я ввиду этого умалчиваю, показывает, что JavaScript на моторе от Эппл (Safari, Bun) по скорости близок к Dart, а на других моторах (Deno, Node, Edge, Firefox), никак не может отстать хотя бы втрое. При этом JavaScript чисто имеет W^X политику во все дырки, а это важно раз уж именно этим, весьма обходными путями, и намерены заняться и Dart и Swift.

    • пересмотр дизайна UI/UX;

    Очень кстати на волне побед и успехов заняться пересмотром. По роадмапу не вполне понял о чём это, однако.

    • поддержка производительности.

    А это вообще о чём? Уж не маркетинг ли к нам пришёл?

    Никому не нужное ИМХО

    Флаттер вышел в критическую точку. Потянет Impeller 3D, выйдет Dart в WebAssembly, не вызовет это проблем с Гуглом политического свойства - вариант А. Не потянет, не войдёт, знаковых фигур уволят ещё - вариант Б. Историю успеха писать рановато...

    Как по мне, Флаттер сейчас на максимуме стандартной кривой внедрения нового. Впереди яма, а с такой стратегияески мыслящей фирмой как Гугол - это чревато. При этом с главной задачей Флаттера, продать разработчику ещё один язык разработки, изменений нет и не предвидится.

    Да, забыл сказать почему я так думаю. Основное направление роадмапа - интеграция. А это одна из частей классической триады к которой прибегают когда больше само не прёт - открыть код, сделать кросс-платформу, интегрироваться с.


    1. lil_master
      09.04.2024 09:39

      Вам не лень было столько бреда писать?)

      Пишите о том, в чём хотя бы разбираетесь.


  1. HeavyRazzer
    09.04.2024 09:39
    +2

    Флаттер - прекрасная штука, когда он работает так как вы от него ожидаете. Приятный, красивый, мультплатформенный.

    1. Есть DevTools: классный инструмент для анализа работы приложения. Нажал кнопку, и оно все показало. Есть Layout inspector, который показывает дереве элементов интерфейса. Полезно при написании автотестов. Но! У меня при апдейте Флаттера что-то пошло не так, и он показывает какую-то кашу из элементов. Вместо ожидаемой пары десятков элементов, прописанных в приложении, показывает сотни непоймичего с одинаковыми названиями. Переустановка библиотек ничего не дала. Гуру Флаттера предложил сделать хардрезет машины и все поставить заново.

    2. Автотесты - это боль. Куча неочевидных штук, которые надо вкючить, иначе ничего работать не будет. Периодически в мозгах Флаттера что-то переклинивает, и ничего не работает. Какие-то инъекции не туда инъектировались... Прочистка проекта или библиотек Флаттера помогает. Но не всегда с первого раза.

    3. Отчеты о тестировании - их нет. Если что-то упало, без копания в стектрейсе не поймешь где именно. А порой из-за асинхронности вобще не ясно где упало. Ничего подобного TestNg или JUnit: только хардкор, с которым разработчики даже не хотят лишний раз связываться. А писать свой тестовый фреймворк со всем логированием и прочей информацией о прогоне - нафиг-нафиг.

      Девелоперам кодить на нем в целом прикольно. Но некоторые потом все равно возращаются в нативный Дроид или Яблоко. Тестировать тоже может быть удобно (Девтулз, запускаемый одной кнопкой). Автотестировать - ну... такое.


    1. DVF
      09.04.2024 09:39

      Наиболее чудесные вещи — всё это завести. Несовместимые CocoaPods, неисправлямые месяцами ошибки в пакетах FireBase, периодические проблемы с Android Studio. Пока остаёшься в рамках SDK — всё отлично.


  1. gun_dose
    09.04.2024 09:39

    У Google нет официальной версии происхождения названия фреймворка

    Забавно, но я с детства знаю, что такое флаттер:

    Фла́ттер (от англ. flutter «дрожание, вибрация») — сочетание самовозбуждающихся незатухающих изгибающих и крутящих автоколебаний элементов конструкции летательного аппарата: главным образом, крыла самолёта либо несущего винта вертолёта. Как правило, флаттер проявляется при достижении некоторой критической скорости, зависящей от характеристик аэроупругости конструкции летательного аппарата. При возникновении резонанса может быть разрушение конструкции. Опасность флаттера возрастает при переходе к сверхзвуковым скоростям полёта.

    И первая ассоциация смысла названия фреймворка у меня была такая, что приложения на Flutter работают так быстро, что телефон может от этого развалиться.


  1. DVF
    09.04.2024 09:39

    Пока что фреймворк настолько успешен, что сообщества разработчиков переполнены сообщениями о невозможности найти работу везде, кроме Индии и Бангладеш. Корпорации не особенно верят в историю успеха, Гугл безбожно врёт в маркетинге о популярности и характеристиках, разработчики флаттера покидают компанию. Рейтинги популярности нестабильны и ближе к нижним позициям.


    1. HeavyRazzer
      09.04.2024 09:39

      Ничего не скажу про популярность, просто пример:

      Финский Wolt (который еще в других странах ЕС), объединенный с американским DoorDash, активно использует Flutter. А это большая компания с большим продуктом.


      1. DVF
        09.04.2024 09:39

        Я могу ещё десяток фирм назвать, но это капля в море пока что. Например, медитационное приложение одно. Очень соблазнительно поменять кодовую базу и заменить нативных дорогих программистов на недорогой аутсурс в вышеупомянутых странах.