Flutter windows dll что это

Обновлено: 05.07.2024

Ни для кого не секрет, что миссия разработчиков Flutter заключается в том, чтобы ориентироваться на широкий спектр устройств, включая iOS, Android, Windows, Linux, macOS и веб-сайты из единой кодовой базы, с нативной компиляцией и визуальным представлением на уровне качества игр. В Google Flutter используются проекты от Assistant до Stadia, от Cloud Search до Blogger. За пределами Google, Flutter был принят компаниями от ByteDance до Grab, от Nubank до MGM Resorts, которые извлекают выгоду из производительности и гибкости Flutter.

  1. 1. Режим выпуска (Release Mode)
  2. 2. Десктоп
  3. 3. FFI
  4. 4. Обновление модели плагина
  5. 5. Работает на Windows: Win32 и UWP
  6. 6. Весело с рабочим столом

Многих из вас интересует прогресс в настольных операционных системах, включая Windows, macOS и Linux. В опросах и на GitHub, десктоп постоянно является одной из самых популярных новых функций. В ближайшие недели разработчики собираются показать больше своей работы, и начнут с обзора некоторых работ различных групп, которые вносят свой вклад в общий проект. Пока поддержка настольных систем является техническим предварительным обзором, работы впереди предстоит ещё много.


Режим выпуска (Release Mode)

Недавно разработчики проверили профиль и режим выпуска для Windows и Linux, в дополнение к существующей поддержке macOS. Например, если вы используете последние сборки Flutter, теперь вы можете скомпилировать приложение Flutter в исполняемый файл Windows с flutter build windows. Он использует производственный компилятор AOT для создания собственного машинного кода x64, который можно распространять на машину без установленного Flutter.

Десктоп

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

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

• При создании нового проекта в последних сборках вы увидите, что шаблон по умолчанию теперь содержит ссылку на свойство visualDensity, которое позволяет элементам управления адаптировать их плотность в зависимости от платформы на которую они нацелены с более компактным интервалом на настольных платформах. Примером того, как это используется, является TextField, который теперь предлагает компактный, удобный и стандартный интервал в зависимости от заданной плотности.

• Разработчики добавили гораздо лучшую поддержку для ввода с помощью мыши и клавиатуры - это включает в себя необработанные коды клавиш в Windows, щелчок правой кнопкой мыши, изменения курсора и поддержку колеса прокрутки.

• Теперь вы можете запрашивать конкретную платформу (через класс Platform) и Windows, macOS и Linux предоставляют соответствующие результаты.

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

Команда Dart усердно работала над полировкой интерфейса внешних функций (FFI), который является отличным средством повышения скорости интеграции с платформой. Для API на основе библиотеки dart:ffi предоставляется прямой механизм привязки к нативному коду. Среда выполнения Dart предоставляет возможность выделить память в куче (heap), которая поддерживается объектом Dart, и выполнять вызовы динамически связанных библиотек.

Для простого примера из Windows, вот фрагмент кода для вызова традиционного API Win32 MessageBox()полностью с кодом Dart:

Вызов Win32 MessageBox API из кода Dart.

В этом коде разработчики предоставляют typedef, который представляют сигнатуру метода как в его нативном, так и в Dart-представлении. Определив их, можно загрузить библиотеку динамической компоновки Windows (DLL), которая обеспечивает реализацию функции через метод lookupFunction(), который отображает сигнатуру функции Dart на базовую собственную точку входа. Наконец, необязательно добавляем простую идиоматическую оболочку, чтобы сделать ее легко доступной из другого кода Dart, что приводит к чему-то вроде этого:



Простой пример приложения для Windows, использующий Win32 MessageBox API

Конечно, вам не нужно делать эту работу самостоятельно, есть вероятность, что кто-то уже проложил путь к API, который вы хотите использовать.

Обновление модели плагина

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

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

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

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

Обратите внимание, что API плагинов для Windows и Linux все еще находятся в движении, поэтому, хотя разработчики поощряют исследование, они не готовы к поддержке общего назначения в настоящее время. Также они работают над добавлением тегов платформы Desktop на pub.dev.

Работает на Windows: Win32 и UWP


Windows предлагает два разных подхода для создания этого устройства для внедрения. Во-первых, зрелая модель программирования Win32 может использоваться для создания точки входа для содержимого Flutter - это обеспечивает максимальную обратную совместимость с платформами, такими как Windows 7 и создает стандартный EXE-файл, который ожидают многие разработчики. И наоборот, современная модель приложения UWP является рекомендуемым подходом для Windows 10 и предлагает интригующие возможности для расширения поддержки Flutter для таких устройств, как Xbox или будущая операционная система Windows 10X.

Разработчики неофициально работают с разными участниками, чтобы исследовать различные решения и с удовольствием поддерживают тесное сотрудничество с Microsoft для создания высококачественного решения. Они полагают, что семейство устройств Surface, включающее в себя Android и Windows, предлагает Microsoft замечательную платформу для создания прекрасных нативных приложений, охватывающих весь их портфолио.

Весело с рабочим столом

Эта работа остается в техническом обзоре, а API и инструменты еще не стабильны. Разработчики по-прежнему отслеживают большую часть работы, которую хотят выполнить до того, как перейти к стабильной поддержке настольных компьютеров, включая улучшенную поддержку доступности и локализации.

Если вы хотите попробовать это, вам нужно быть на канале разработки. Windows и Linux доступны только в ветке master, где происходит активная разработка Flutter. macOS доступен в ветке dev, которая немного более стабильна, но не рекомендуется для производственного использования. Вы можете переключать каналы с помощью flutter channel master или flutter channel dev, а затем использовать одну из следующих команд, чтобы включить поддержку используемой платформы:

C:\flutter> flutter config --enable-windows-desktop$ flutter config --enable-macos-desktop$ flutter config --enable-linux-desktop

Разработчики уже увидели, как некоторые авантюрные разработчики начинают использовать Flutter на рабочем столе для создания приложений. Одним из первых настольных приложений Flutter macOS, которое они увидели, является Sharezone. Студент-планировщик, ориентированный на образовательный рынок Германии, который начинал его как мобильное приложение, но недавно добавил веб-версии и версии для настольных компьютеров.


Sharezone Schulplan - приложение для студентов, преподавателей и родителей, чтобы отслеживать домашние задания, учебные группы и расписание.

Разрабатываете мобильные Flutter-приложения? Рассказываем о проектах, которые позволят запустить их на настольных компьютерах.

Если вы разрабатываете приложения для смартфонов, то, возможно, слышали о новой среде разработки − Google Flutter. Это платформа, которая позволяет вам разрабатывать приложения с единой кодовой базой на гугловском языке Dart и публиковать их на Android и iOS платформы.

Кроме того, существует возможность запуска вашего Flutter-приложения на Windows, macOS и Linux, но пока только с помощью проектов сторонних разработчиков: раз и два. Оба построены на базе Flutter API, поэтому могут работать на системах вроде Fuchsia.


Также они оба используют OpenGL-библиотеку GLFW, которая предоставляет API для создания окон и обработки ввода с клавиатуры и мыши. Поэтому на платформе, где будет запускаться приложение, должны быть установлены драйверы для OpenGL.

Чтобы установить Flutter, выполните действия, перечисленные на официальной странице установки. Не забудьте добавить Flutter-переменную среды PATH.

Проект №1: Поддержка десктопов (Google)

Этот проект пока находится в стадии разработки, поэтому некоторые функции временно недоступны, подробнее можно почитать в описании.

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

Для компиляции исходного кода проекта и создания настольных приложений с помощью Flutter следуйте инструкциям здесь и здесь.

Проект №2: Поддержка десктопов (Drakirus)

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

Для запуска существующих проектов и реализации собственного Flutter-приложения сделайте следующее:

  1. Откройте доступ к файлам проекта.
  2. Загрузите демо-файл последней версии для вашей платформы из этого раздела.
  3. Распакуйте загруженный файл в любое место по вашему выбору.
  4. Запустите исполняемый файл stocks (macOS и Linux) или socks.exe (Windows) в корневом каталоге. Он будет работать как любое другое приложение, установленное в системе.




Примечание: в примерах на этой странице Flutter-приложения для MacOS могут загружаться с черного экрана. Решить проблему можно с увеличением размера экрана.

Запуск собственного проекта (с использованием предварительно скомпилированных файлов)

  1. Загрузите предварительно скомпилированный файл для вашей операционной системы здесь.
  2. Распакуйте содержимое.
  3. Отредактируйте файл config.json в папке шаблонов, изменив заданные параметры в соответствии с информацией о вашей среде и приложении:
  • FlutterPath: папка с установочными файлами
  • FlutterProjectPath: папка вашего проекта (разработанного во Flutter)
  • IconPath: путь к файлу иконки приложения на рабочем столе (можно сохранить значение по умолчанию)
  • ScreenHeight: высота окна приложения
  • ScreenWidth: ширина экрана приложения

Важно: на Windows прописывайте «\\» вместо «\» при указании пути к папке.

4. Запустите исполняемый файл flutter-desktop-template в macOS/Linux или flutter-desktop-template.exe на Windows. Запущенное приложение будет работать так же, как и остальные.

Загрузка собственного проекта (компиляция проекта Go Desktop)

  1. Загрузите и установите язык программирования Go отсюда.
  2. Установите gcc, если его нет на ПК. Для Windows лучше выбрать tdm64-gcc, для Mac подходит инструмент из командной строки Xcode, а в Linux обычно всё уже установлено. и установите Git, если он не установлен в вашей системе.
  3. Создайте Flutter-проект с помощью команды flutter create или IDE.
  4. Добавьте следующее в файл main.dart:

6. Добавьте следующий код в начало метода main (до вызова метода runApp) из файла main.dart:

7. В терминале выполните команду flutter build bundle в папке проекта Flutter − будет создан каталог с файлами, необходимыми для запуска.

9. Загрузите десктопный пакет для Go.

10. Распакуйте содержимое загруженного файла.

11. Переименуйте папку, извлеченную из go-flutter-desktop-embedder-0.2.1-alpha, в go-flutter-desktop-embedder.

13. Загрузите шаблон репозитория, разархивируйте загруженный файл в любую папку.

14. Загрузите библиотеку Flutter − Linux, MacOS, Windows, заменив жирный текст (хеш бета-версии 0.9.4) хешем той версии Flutter, которую вы используете в своем проекте. Посмотреть эту информацию можно в bin\internal\engine.version в папке проекта.

15. Разархивируйте загруженный файл и скопируйте libflutter_engine.so для Linux, FlutterEmbedder.framework (содержимое файла FlutterEmbedder.framework.zip в виде папки с именем FlutterEmbedder.framework) для macOS или flutter_engine.dll для Windows в папку, где находится файл main.go.

16. В терминале перейдите в папку go-flutter-desktop-embedder и выполните следующее: для Linux − export CGO_LDFLAGS="-L$", для macOS − export CGO_LDFLAGS="-F$ -Wl,-rpath,@executable_path", для Windows − set CGO_LDFLAGS=-L%cd%. Не закрывайте окно терминала.

17. В этом же окне выполните команду go install в папке go-flutter-desktop-embedder. Все еще держите терминал открытым.

18. Отредактируйте файл config.json, так же, как делали ранее.

19. В том же терминале повторите шаг №16 и выполните команду go build, но теперь уже в папке с файлом main.go. В Windows используйте команду go build -ldflags -H=windowsgui, чтобы терминал не запускался вместе с приложением.

20. На этом этапе появится исполняемый файл, с именем, взятым из названия папки проекта, например, − flutter-desktop-template.exe.

21. Открытие файла запустит приложение.


Запускаем Flutter-приложения на десктопе


Запомнить

  • Всякий раз, когда в проект Flutter вносятся какие-либо изменения, повторяйте шаг №7
  • Проект должен работать с той же версией Flutter, которую вы прописали в шаге №14
  • Всякий раз, когда вы вносите какие-либо изменения в файл config.json, повторяйте шаги №16 и №19.

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

  1. Убедитесь, что вы используете версию шаблона 1.1.0.
  2. Создайте папку для хранения всех файлов, необходимых для запуска вашего приложения.
  3. Включите в каталог приложения исполняемый файл flutter-desktop-template (Linux и macOS) или flutter-desktop-template.exe (Windows). Переименуйте исполняемый файл в соответствии с именем вашего приложения.
  4. Добавьте библиотеку Flutter в каталог приложения. Эта библиотека представляет собой файл libflutter_engine.so (Linux), папку FlutterEmbedder.framework (macOS) или файл flutter_engine.dll (Windows).
  5. Скопируйте файл config.json в папку приложения. Отредактируйте этот файл, очистив значения FlutterPath и FlutterProjectPath.
  6. Добавьте каталог assets и иконку приложения в общую папку. Может потребоваться изменение значения IconPath в config.json.
  7. Скопируйте в папку с приложением папку flutter_assets, расположенную в основной директории вашего проекта.
  8. Скопируйте файл icudtl.dat, расположенный в bin\cache\artifacts\engine\windows-x64 (Windows), bin/cache/artifacts/engine/linux-x64 (Linux) или bin/cache/artifacts/engine/darwin-x64 (macOS) в каталог приложения.
  9. В macOS может потребоваться упаковать каталог в соответствии со стандартами платформы, чтобы терминал не отображался вместе с приложением.

В этой статье мы рассказали о двух проектах, которые позволяют запускать на компьютерах приложения, разработанные с помощью Flutter. Первый разработан в Google, но поддерживается сторонними разработчиками. Второй выполняет ту же задачу, но уже с применением Golang. Эти решения помогут в том случае, если нужно разработать приложения для разных платформ.

Для установки и запуска Flutter ваша среда разработки должна соответствовать этим минимальным требованиям:

Получение Flutter SDK

  1. Загрузите следующий установочный пакет, чтобы получить последний стабильный выпуск Flutter SDK:

О других выпусках и старых сборках см. страницу архива SDK.

2. Распакуйте zip-файл и поместите содержащийся в нем flutter в желаемое место установки SDK Flutter (например, C:\src\flutter ).

Если вы не хотите устанавливать фиксированную версию установочного пакета, вы можете пропустить шаги 1 и 2. Вместо этого возьмите исходный код из Flutter repo на GitHub и измените ветки или теги по мере необходимости. Например:

Теперь вы готовы запускать команды Flutter в консоли Flutter Console.

Обновите свой PATH

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

Чтобы эти изменения вступили в силу, необходимо закрыть и снова открыть все существующие окна консоли.

Запуск flutter doctor

В консольном окне, в пути к которому находится каталог Flutter (см. выше), запустите следующую команду, чтобы узнать, есть ли какие-нибудь зависимости от платформы, необходимые для завершения установки:

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

В следующих разделах описано, как выполнить эти задачи и завершить процесс установки. После того, как вы установили все недостающие зависимости, вы можете запустить команду flutter doctor еще раз, чтобы убедиться, что вы все настроили правильно.

Установка Android Studio

Настройка вашего Android устройства

Чтобы подготовиться к запуску и тестированию приложения Flutter на устройстве под управлением ОС Android, необходимо устройство под управлением ОС Android 4.1 (уровень API 16) или выше.

Настройка Android эмулятора

Чтобы подготовиться к запуску и тестированию вашего Flutter приложения на эмуляторе Android, выполните следующие действия:

Для получения более подробной информации о вышеописанных шагах смотрите раздел Управление AVD.

7. В менеджере виртуальных устройств Android нажмите кнопку Run на панели инструментов. Эмулятор запустится и отобразит экран по умолчанию для выбранной версии ОС и устройства.

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


С момента выпуска Flutter в декабре 2018 года он набрал обороты и быстро становится популярным выбором для многих профессиональных разработчиков мобильных устройств по всему миру.

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

В этой статье мы рассмотрим процесс создания простого desktop приложения с помощью Flutter и рассмотрим возможности и проблемы использования этих инструментов для создания законченных приложений.

Требования

Для создания desktop приложений с помощью Flutter требуется современная среда Flutter SDK с включенной поддержкой рабочего стола:

  1. Если у вас его еще нет, загрузите Flutter для вашей ОС с их сайта.
  2. Переключитесь на главный канал с помощью $ flutter channel master
  3. Вы можете обновить Flutter (при необходимости) с помощью $ flutter upgrade

Чтобы включить поддержку для вашей целевой среды:

  1. Linux: $ flutter config --enable-linux-desktop
  2. MacOS: $ flutter config --enable-macos-desktop
  3. Window: $ flutter config --enable-windows-desktop

Команда flutter create в настоящее время поддерживает все еще не основные операционной системы (по состоянию на декабрь 2019 года) только MacOS. Для получения дополнительной информации о текущем и будущем статусе поддержки настольных компьютеров, можете посетить GitHub.

Настройка проекта

Чтобы создать приложение для macOS, просто запустите, $flutter create и проект будет создан. Для создания приложения, которое также может поддерживать Linux и Windows, проект Flutter предоставляет стартовый проект, поддерживающий все три среды, с проектом flutter-desktop-embedding.

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

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

Давайте посмотрим на файл определения проекта, pubspec.yaml:

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

Точка входа в приложение

Основной файл для этого приложения - стандартный lib/main.dart :

Функция main() запускает приложение и устанавливает целевую платформу отладки по умолчанию на fuchsia, которая представляет собой ОС, разрабатываемую в Google и включающую пользовательский интерфейс, созданный с помощью Dart и Flutter. Класс MyApp - это базовая реализация StatelessWidget, которая возвращает основной контейнер для самого приложения, со стандартом заголовка, темы и домашнего виджета для любого приложения Flutter.

Обратите внимание, что свойство darkTheme и его значение ThemeData.dark() обеспечивают темную тему, когда она запрашивается операционной системой, как в случае macOS с включенной темной темой для всей системы. Далее мы рассмотрим содержание страницы примера и ее назначение.

Домашний экран

Большая часть содержимого приложения для этой простой демонстрации находится в lib/home.dart :

В Home мы импортируем несколько пакетов (включая плагин color_panel ) и реализуем StatefulWidget, чтобы этот экран был в состоянии хранить и обновлять приложения. Dart и Flutter предоставляют отличные возможности для управления состоянием с использованием различных инструментов и шаблонов, самым простым из которых является виджет с состоянием, подобный показанному в этом файле.

Свойства, управляемые в состоянии этого виджета, включают цвет и счетчик. Методы _increment и _decrement используют метод setState для увеличения или уменьшения счетчика. Метод _showPanel запрашивает экземпляр ColorPanel из импортируемого плагина, а затем вызывает на нем show , который будет запрашивать нативный выбор цвета из операционной системы. Когда выбран цвет, setState используется для обновления состояния виджета новым цветом, который ставит его в очередь для перерисовки движком Flutter.

Читайте также: