company_banner

Вышли ожидаемые релизы от Google: Flutter 2 и язык Dart 2.12


    Корпорация 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.

    Selectel
    IT-инфраструктура для бизнеса

    Похожие публикации

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

      +1
      Какие недостатки?
        0
        Большое число сторонних библиотек ещё не поддерживает null-safety, включая `firebase_analytics`.

        Мигрировать большой проект на null-safety тоже та ещё задача.
          +1

          Да, попробовал, миграция инструментом невозможна пока не обновятся все пакеты. Руками будет долго, на проект 40+ экранов больше 3000 ошибок

          0
          Как и везде, разработчики пакетов не успевают за релизами.
            +2
            Меня больше волнует импакт на вебовую производительность. Какой оверхед вносить этот WebAssembly движок рендеринга.
              0

              Оверхед как раз вносил dart2js компилятор и все мимика работы Flutter over HTML+CSS. Теперь все ближе к тому как работает на мобилках, как я понимаю.

                0
                Остались оба рендерера, как и раньше. Skia потянет wasm с имплементацией на примерно шесть мб, html ничего тянуть не будет.
                  0
                  HTML движок по производительности равен обычному react/angular?
                    0
                    Нет конечно, это вообще другое :-) Работает достаточно быстро, но на DOM плюёт, разметка нечитабельная практически. Это как Android приложение, только запущенное прямо в браузере.
                      0
                      Печально тогда. Только веб стало адекватным по производительности, нахлобучили новую прослойку…
                        0
                        Это перпендикулярно привычному вебу, но работает нормально и сразу на android/web/windows/… Так что вполне имеет право на жизнь.
                0

                Зато завезли наглядный пример перформанса графики: flutterplasma.dev

                  0

                  Раньше dart преобразовывался в js. Теперь dart компилируется в WebAssembly(это что то вроде ассемблера для веба). Соответственно скорость выполнения станет гораздо выше

              0

              Скролинг мышкой в веб версии все ещё рывками, т.е. надо писать костыль. Лучше бы это пофиксил в версии 2.0

                +1
                Лучше бы это пофиксил в версии 2.0

                Это не так интересно.
                +2
                Попробовал собрать свой небольшой проект с локализацией, из коробки не взлетело, хотя весь код изначально писался так, чтобы поддерживать Null Safety.
                Фикс:
                dependency_overrides:
                  intl: 0.17.0-nullsafety.2

                Кажется, что все не плохо, но не так гладко как заявлено. Думаю, что вскоре должно стать лучше.
                  0
                  Проблема флаттера это сторонние пакеты.Пока просто сидим и ждем пока все обновятся
                    0

                    Для меня большой минус флаттера в том что он не может в СЕО.

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

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