Почему Flutter Desktop — это прорыв и как это может ускорить мобильную разработку

Flutter desktop (версия Flutter для Mac, PC и Linux) для реальных приложений и ускорения разработки.

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

Написать приложение за один раз и внедрить его на Android, iOS, Windows, Mac и Linux, а также передать всю бизнес-логику в веб (с помощью Dart) - это большая, но выполнимая, задача.

Давайте разбираться подробнее!

Нативный desktop-клиент для ускорения мобильной разработки

Однако прежде чем взглянуть на реальные нативные приложения для настольных компьютеров, давайте посмотрим, что запуск Flutter сразу на десктопе может дать при разработке под iOS и Android:

1. Время запуска

Почему Flutter Desktop — это прорыв и как это может ускорить мобильную разработку

Прежде чем вы сможете начать работу и сделать что-то продуктивное, произойдет запуск эмулятора Android и Gradle. Это особенно актуально когда разработчик работает на Windows.

На следующем GIF-изображении я записал процесс холодной загрузки эмулятора и запуска стандартного приложения Flutter. Это заняло у меня целых 2 минуты и 40 секунд. Только представьте, сколько продуктивных действий можно было бы сделать за это время.

Загрузка Android и запуск Gradle (ускорено в 10 раз)

Что если я скажу вам, что вы сможете запустить приложение менее чем за 10 секунд?

Запуск приложения в исходном виде избавляет вас от необходимости запускать Android в вашей системе и работать с Gradle.

Просто посмотрите на это:

Запуск симулятора Flutter в режиме реального времени

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

2. Изменение размеров во время работы

Как и в случае с любым другим приложением, вы захотите протестировать свой макет для разных размеров. Что вы сделаете в таком случае?

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

Мне это кажется довольно сложным. Можем ли мы сделать это проще?

Конечно!

Думаю, это не требует пояснений :]

3. Работайте с Assets на компьютере

При разработке и тестировании приложений, которые должны взаимодействовать с активами (assets) на телефоне, может быть довольно утомительно сначала переносить все тестовые файлы на эмулятор или устройство.

Разве не лучше было бы просто выбрать нужный файл с помощью встроенного средства выбора файлов?

Если вы кричите "ДА", тогда у меня есть то, что вам нужно!

Загрузка файла напрямую из файловой системы компьютера

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

Горячая перезагрузка и отладка

Все это, безусловно, хорошо и интересно. Однако возможность горячей загрузки и отладки - это обязательное условие для каждого продуктивного разработчика.

Поэтому Flutter сделали так, чтобы это работало и на настольных компьютерах!

Горячая перезагрузка и отладка нативного приложения

Оперативная память

Это очень важно для тех, кто работает на ноутбуках и/или менее мощных машинах.

Эмулятор Android съедает примерно 1 ГБ оперативной памяти. Теперь представьте, что работают два таких эмулятора (тестирование приложения для чата или нечто подобного) + Android Studio + вечно жаждущий оперативной памяти Chrome.

Это довольно тяжело.

1 ГБ оперативной памяти для эмулятора Android
1 ГБ оперативной памяти для эмулятора Android

Поскольку эмбеддер работает нативно, нет необходимости в использовании Android. Это делает его намного меньше.

100 МБ оперативной памяти для нативного приложения в debug режиме
100 МБ оперативной памяти для нативного приложения в debug режиме

Нативные приложения для настольных компьютеров

Простого запуска приложения Flutter на настольном компьютере недостаточно для полноценного, готового к производству настольного приложения. Это похоже (и по сути так и есть) на запуск мобильного приложения на настольном компьютере.

Чего не хватает? Многого!

Наведения курсора, изменения курсора, взаимодействия с колесом прокрутки и т.д.

Поэтому во Flutter реализовали и это тоже!

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

Обычное приложение для чата во Flutter на рабочем столе :)

На скриншотахниже точно такой же код, запущенный на эмуляторе Android.

Почему Flutter Desktop — это прорыв и как это может ускорить мобильную разработку
Параллельная разработка для Android и ПК

Обратите внимание, что на эмуляторе оно ведет себя как обычное приложение, а на рабочем столе меняет курсор и добавляет эффект наведения.

А вот насколько просто реализованы виджеты для рабочего стола:

Наведение
Курсор

Написание настоящего кроссплатформенного приложения - включая настольные компьютеры

Выше мы посмотрели только на плюсы использования Flutter Desktop, связанные с мобильной разработкой. Теперь посмотрим на плюсы Flutter при разработке Desktop приложения, либо полностью кроссплатформенного с Desctop версией

Виджеты

Большинство создаваемых вами виджетов универсальны в использовании. Подумайте о кнопках, индикаторах загрузки и т.д.

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

Виджеты вроде CursorWidget можно без проблем включать и в версию для Android. Там они достаточно просто игнорируются.

Pages

Страницы довольно сильно различаются в зависимости от платформы и размера экрана. Однако в основном они отличаются только макетом, но не функциональностью.

Использование виджета PageLayoutWidget упрощает создание точных макетов для каждой платформы.

Бонус: По умолчанию у вас также есть хорошая поддержка для планшетов :)
Бонус: По умолчанию у вас также есть хорошая поддержка для планшетов :)

Библиотеки

Никаких изменений в коде не требуется при использовании библиотек, которые также поддерживает Flutter Desktop.

Спасибо за внимание и позитивного настроения!

Мы в Morning Stars специализируемся на Flutter разработке и помогаем компаниям создавать мобильные приложения и веб сервисы которые нравятся пользователям.

44
4 комментария

даже на гифках видно, как ненативно ведет себя ui. вся магия, конечно, разбивается об это.

1

Всё хорошо, казалось бы, но... Dart

1

Самое веселое во флаттере начинается после. Или в более менее сложных проектах.

Например конфликты зависимостей. Когда А просит Б, и С просит Б. вот только А просит 2.0, а С просит 2.2. А 2.0 и 2.2 кардинально различаются. Вот веселье начинается.
Еще есть классная штука с билдами. Когда у тебя на дроиде билдится, а вот на иоси нет. И бегай с бубном.

Потом бывает ситуации с нативными либами. Все как бы работает, а аппконнект не принимает. И в чем проблема - непонять.

Еще есть разные приколы когда вот виджет вроде как есть, а вроде как не обновился пока не скрольнешь.
Веселья с врап контентом. То что в дроиде из коробки, во флаттере со скрипом надо делать.

Везде есть веселье.

Но флаттер да - шикарен. Хот релоуд - фантастика.
А дарт - ну дарт. Привыкли же к котлину )

1

Оно оправдано если уже есть разработанное под планшеты приложение, которое можно попробовать портировать на Винду.
При этом надо помнить про огромные возможности браузеров на десктопе и дикое количество js библиотек, которые позволяют быстро реализовать любой интерфейс и функционал на каком-нибудь electron или nw.js.