
Всем привет!
Сегодня я покажу вам, как же запустить ваше существующие Flutter приложение на десктопе (MacOS, Linux или Windows).
Во-первых, вам прийдется переключить канал Flutter c release на master. Для этого вам потребуется выполнить следующие команды в командной строке:
flutter channel master
flutter upgrade
Затем вам нужно задать переменной окружения ENABLE_FLUTTER_DESKTOP значение true.
Для это выполните в командой строке следующее:
Mac OS и Linux
export ENABLE_FLUTTER_DESKTOP=true
Windows PowerShell
$env:ENABLE_FLUTTER_DESKTOP="true"
Windows CMD
set ENABLE_FLUTTER_DESKTOP=true
После этого вы должны видеть ваш десктоп в списке доступных устройств для запуска Flutter. Чтобы проверить это, выполните команду flutter devices
Как вы можете видеть на скриншоте, у меня в списке доступных устройств появилась Mac OS.
Дальше нам потребуется заглянуть в следующий репозиторий:
https://github.com/google/flutter-desktop-embedding
Нас интересует содержание директории example, а именно папки macos, linux и windows. Это раннеры для соответствующих платформ — нативные приложения, внутри которых работает Flutter. Точно такие же, какие вы можете увидеть в директории вашего проекта, когда создаете проект с помошью команды flutter create.
Просто скопируйте раннер для интересующей вас платформы в директорию проекта. Этот шаг необходим, так как flutter create пока не поддерживает автоматическое создание раннеров для десктопа.
Уже почти готово. Сейчас нужно немного отредактировать ваш main.dart
Добавьте следующие импорты:
import 'dart:io' show Platform;
import 'package:flutter/foundation.dart'
show debugDefaultTargetPlatformOverride;
Измените main() следующим образом:
void main() {
debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;
[...]
}
Последний шаг. Выполните следующие команды:
flutter packages get
flutter precache --linux
Готово! Теперь просто запустите flutter run и ваше приложение соберется на десктоп!
Важное замечание:
Стоит иметь ввиду, что многие сторонние плагины, которые вы использовали в ваших Flutter приложениях не будут работать на десктопе, так как они зависят от нативных API. В будущем ситуация, конечно, изменится, но пока лучше не использовать этот способ для чего то серьезного.
Комментарии (7)
shaykemelov
24.05.2019 06:19Интересно, что там по потребляемым ресурсам в macOS для release версии?
- Место на диске
- CPU
- Оперативная память
Для Ubuntu 18.04 собрал приложение из репозитория — 114,7 Mb, 1 ядро 100%, 150-200 Mb оперативки.sapphire_id Автор
24.05.2019 06:20Я полагаю, что тут та же ситуация, что и при сборке для мобилок — в дебаге Flutter довольно прожорлив, но в релизной сборке очень компактен (по сравнению с другими кроссплатформенными решениями)
osipovaleks
24.05.2019 13:53А я правильно понимаю что это не совсем релизная фишка для Flutter? Какое сейчас состояние у Flutter для desktop (alpha? beta? RC?) и где его можно отслеживать?
sapphire_id Автор
24.05.2019 22:37
dector
В оригинале есть продолжение. :)
medium.com/flutter-community/flutter-for-desktop-create-and-run-a-desktop-application-ebeb1604f1e0
sapphire_id Автор
Простите, но в статье по вашей ссылке автор наоборот, не рекомендует копировать раннеры в директорию вашего проекта, а предлагает скопировать код вашего проекта (папку lib) внутрь примера из flutter-desktop-embedding.
Оба варианта допустимы, а более детальную информацию обо всем процессе подготовки, в том числе о том, как сделать свой собственный раннер можно найти тут: https://github.com/flutter/flutter/wiki/Desktop-shells
dector
Это был тонкий намек на то, что материал напоминает рерайт первой части статьи из медиума.