Flutter — это пакет разработки программного обеспечения пользовательского интерфейса с открытым исходным кодом, созданный Google . Он используется для разработки кроссплатформенных приложений на основе единой базы кода для любого веб- браузера , [4] Fuchsia , Android , iOS , Linux , macOS и Windows . [5] Впервые описано в 2015 году, [6] [7] Flutter был выпущен в мае 2017 года. [1]
Первая версия Flutter была известна как «Sky» [8] и работала на операционной системе Android . Он был представлен на саммите разработчиков Dart в 2015 году [9] с заявленным намерением обеспечить возможность стабильного рендеринга со скоростью 120 кадров в секунду . [10] Во время выступления на Днях разработчиков Google в Шанхае в сентябре 2018 года Google анонсировала Flutter Release Preview 2, последний крупный релиз перед Flutter 1.0. 4 декабря 2018 года на мероприятии Flutter Live был представлен Flutter 1.0, что означает первую стабильную версию фреймворка. 11 декабря 2019 года Flutter 1.12 был представлен на мероприятии Flutter Interactive. [11]
6 мая 2020 года были выпущены комплект разработки программного обеспечения Dart ( SDK ) версии 2.8 и Flutter 1.17.0, в которых добавлена поддержка Metal API , которая повышает производительность на устройствах iOS примерно на 50 %, а также новые виджеты Material и отслеживание сети. Инструменты разработки.
3 марта 2021 года Google выпустила Flutter 2 во время онлайн-мероприятия Flutter Engage. Это крупное обновление обеспечило официальную поддержку веб-приложений с новым средством рендеринга Canvas Kit и веб-виджетами, поддержку настольных приложений раннего доступа для Windows , macOS и Linux , а также улучшенные API -интерфейсы добавления в приложение . [12] В этом выпуске также использовался Dart 2.0 с нулевой безопасностью , что вызвало множество критических изменений и проблем со многими внешними пакетами; однако команда Flutter включила инструкции и инструменты для решения этих проблем. [13]
8 сентября 2021 года Google выпустила Dart 2.14 и Flutter 2.5. Обновление привнесло улучшения в полноэкранный режим Android и последнюю версию Material Design от Google под названием Material You. Dart получил два новых обновления, стандартизирующих условия ворса и отмечающих поддержку Apple Silicon как стабильную. [14] [15]
12 мая 2022 года Google объявила о выпуске Flutter 3 и Dart 2.17. Это обновление увеличило общее количество поддерживаемых платформ до шести, включая стабильную поддержку Linux и macOS на процессорах Intel и Apple Silicon. [16]
30 августа 2022 года был анонсирован Flutter 3.3. В этом выпуске реализовано взаимодействие Objective-C и Swift , а также ранняя предварительная версия нового движка рендеринга под названием «Impeller», целью которого является уменьшение заиканий, вызванных компиляцией шейдеров . [17]
25 января 2023 года был анонсирован Flutter 3.7.
Основные компоненты Flutter включают в себя:
Приложения Flutter написаны на языке Dart и используют многие более продвинутые функции языка. [18]
Для повышения производительности выпускные версии приложений Flutter на всех платформах используют упреждающую компиляцию (AOT) , [19] за исключением Интернета, где код транслируется в JavaScript . [20]
Flutter наследует менеджер пакетов и репозиторий программного обеспечения Dart Pub , который позволяет пользователям публиковать и использовать собственные пакеты, а также плагины, специфичные для Flutter. [21]
Движок Flutter, написанный в основном на C++ , обеспечивает поддержку низкоуровневого рендеринга с использованием либо графической библиотеки Skia от Google , либо пользовательского графического слоя «Impeller». [17] Кроме того, он взаимодействует с SDK для конкретной платформы , например, предоставляемыми Android и iOS , для реализации специальных возможностей, файлового и сетевого ввода-вывода, встроенной поддержки плагинов и многого другого. [18]
Библиотека Foundation, написанная на Dart , предоставляет базовые классы и функции, которые используются для создания приложений с использованием Flutter, например API-интерфейсы для взаимодействия с движком. [18] [22]
Платформа Flutter содержит два набора виджетов, которые соответствуют определенным языкам дизайна: виджеты Material Design реализуют одноименный язык дизайна Google , а виджеты Cupertino реализуют рекомендации Apple по пользовательскому интерфейсу iOS . [18] [23] [24] [25] Flutter позволяет разработчику использовать любой набор виджетов на любой платформе, то есть даже виджеты Купертино на Android. Сторонние пакеты можно использовать для автоматической настройки дизайна приложения в соответствии с текущей операционной системой. [26]
Flutter поддерживает официальную поддержку следующих IDE и редакторов через плагины:
Другие IDE можно использовать с плагинами, поддерживаемыми сообществом, или с помощью инструментов Flutter из командной строки. [10] На рынке появилось несколько инструментов, которые начали использовать официальную среду Flutter IDE Framework и предлагают настраиваемые конструкторы графического пользовательского интерфейса .
Базовым компонентом программы Flutter является «виджет», который, в свою очередь, может состоять из других виджетов. Виджет описывает логику, взаимодействие и дизайн элемента пользовательского интерфейса с реализацией, аналогичной React . В отличие от других кроссплатформенных наборов инструментов, таких как React Native и Xamarin , которые рисуют виджеты с использованием собственных компонентов платформы, Flutter сам визуализирует виджеты на попиксельной основе.
Существует два основных типа виджетов: без сохранения состояния и с сохранением состояния . Виджеты без сохранения состояния обновляются только в том случае, если их входные данные изменяются, что делает их очень эффективными, в то время как виджеты с сохранением состояния могут вызывать setState()
метод для обновления внутреннего состояния и перерисовки. [27]
Хотя виджеты являются основным методом создания приложений Flutter, их также можно обойти и использовать непосредственное рисование на холсте. Эта функция иногда использовалась для реализации игровых движков во Flutter. [28]