Корпорация Google продолжает развивать свои продукты. Несколько дней назад была представлена новая версия построения интерфейса пользователя Flutter 2. Она, по словам разработчиков, стала универсальным фреймворком, который позволяет разрабатывать любые типы программ. Это могут быть приложения как для десктопов, так и web-сервисы.

Flutter в процессе эволюции стал неплохой альтернативой React Native. Его главное достоинство — возможность на основе одной кодовой базы создавать приложения для разных платформ, включая iOS, Android, Windows, macOS и Linux. Плюс можно разрабатывать и чисто браузерные приложения. И да, обновление до 2 версии не влияет на поддержку продуктов, написанных на Flutter 1. Они без дополнительного редактирования кода могут быть адаптированы для работы на рабочем столе и в Web.

Новшества во Flutter 2


Большая часть кода Flutter реализована на языке Dart. Что касается runtime-движка, то он написан на С++. При разработке приложений можно использовать не только Dart, но и Dart FFI для вызова кода на C/C++. Благодаря компиляции приложений в машинный код для целевых платформ разработчики добились высокой производительности выполнения. И при этом программу не требуется перекомпилировать после каждого изменения. У Flutter есть режим горячей перезагрузки, который дает возможность вносить любые изменения в работающее приложение, сразу оценивая результат.

Во второй версии появилась полноценная поддержка создания приложений для Web, которая пригодна для рабочих внедрений. Есть три главных сценария применения Flutter для Web:

  • Разработка обособленных web-приложений (PWA, Progressive Web Apps).
  • Создание одностраничных web-приложений (SPA, Single page apps).
  • Преобразование мобильных приложений в web-приложения.

В описании второй версии упоминается также использование механизмов ускорения отрисовки двухмерной и трехмерной графики, плюс гибкая компоновка элементов на экране и компилируемый в WebAssembly движок отрисовки CanvasKit.


Поддержка приложений для рабочего стола уже реализована, но она находится на стадии бета-тестирования. Разработчики обещают запустить финальный вариант в одном из следующих выпусков. Flutter уже используют Canonical, Microsoft и Toyota. Так, компания Canonical использует Flutter в качестве главного фреймворка для разработки своих приложений. Например, фреймворк используется в новом инсталляторе для Ubuntu. Microsoft адаптировала Flutter для складных устройств с несколькими экранами, включая Surface Duo. Ну а Toyota будет использовать Flutter для создания автомобильных информационно-развлекательных систем. На основе Flutter построена еще и пользовательская оболочка ОС Fuchsia, о которой мы несколько раз писали.

Язык программирования Dart 2.12


Эта версия — продолжение радикально преобразованной ветки Dart 2. Отличия от первой версии — использование сильной статической типизации, где типы могут выводиться автоматически. Динамическая типизация больше не используется, так что вычисленный изначально тип закреплен за переменной, так что в дальнейшем применяется строгая проверка типа.

В этом выпуске есть одно значительное дополнение — стабилизация режима безопасного использования значения «Null» (null safety). Теперь, после выхода из бета-версии, режим дает возможность избежать проблем, вызванных попытками использования не определенных и выставленных в «Null» переменных. В новой версии по умолчанию определено, что переменные не могут иметь неопределенные значения, если им не присваивается значение null. В этом режиме учитываются типы переменных, что дает возможность компилятору применять дополнительные оптимизации. Ну а соответствие типов проверяется еще на этапе компиляции. Пример — попытка присвоения значения «Null» переменной с типом, который не подразумевает неопределенное состояние.


Еще одно улучшение — выход стабильной версии библиотеки FFI, позволяющей создавать высокопроизводительный код, из которого можно обращаться к API на языке Си. Разработчики оптимизировали ее производительность и размер. Кроме того, они добавили инструменты для разработчиков и систему профилирования кода, которые написаны с использованием Flutter. Плюс добавлены новые плагины для разработки приложений на Dart и Flutter для Android Studio/IntelliJ и VS Code.