Создайте подключаемый модуль Flutter Desktop!
Как написать свой собственный плагин Flutter Desktop? Хм….
Все в одном ресурсе Flutter: https://flatteredwithflutter.com/flutter-desktop-plugin/
Предварительные требования…
Если вы еще не знакомы с Flutter Desktop и хотите сначала настроить, ознакомьтесь с этой статьей здесь…
Начать…
В конце этой статьи вы сможете создавать свои плагины для рабочего стола….
Мы разделим эту статью на:
- Создание подключаемого модуля рабочего стола
- Использование плагина Desktop в приложении Flutter
- Включить поддержку Windows
Создание подключаемого модуля рабочего стола
Нам нужно запустить команду,
flutter create --org com.flatteredwithflutter --template=plugin init_dsktp_plugin
Авария :
- Для создания плагина нам нужно использовать флаг
--template=plugin
- Название нашего плагина будет
init_dsktp_plugin
. - Используйте параметр
--org
, чтобы указать свою организацию, чаще всего в обратном порядке… то естьcom.flatteredwithflutter
После выполнения этой команды у вас должна получиться такая структура проекта:
Здесь имя папки такое же, как вы указали при создании плагина… Примечание. Папка Windows добавляется позже.
В pubspec.yaml вы можете указать платформы, которые хотите поддерживать…
Внутри папки lib вы можете увидеть файл init_dsktp_plugin.dart. Это точка входа для внешнего приложения Flutter в наш плагин…
Мы предоставляем метод под названием platformVersion
.
Имя нашего канала метода - init_dsktp_plugin
, а имя метода - getPlatformVersion
. Примечание: это должно быть то же самое в файлах реализации.
Реализация…
Внутри папки macOS видим InitDsktpPlugin.swift
.. Этот файл - мозг плагина ...
Шаги:
- Зарегистрируйте плагин с каналом метода, как указано в файле dart .. (см. Выше)
Примечание. Смотрите, что канал метода такой же, как и у файла dart.
2. Реализуйте метод ..
Эта функция вызывается всякий раз, когда приложение Flutter вызывает метод нашего плагина ... Здесь может быть n случаев ...
Для нашего плагина у нас есть только getPlatformVersion
. Внутри этого мы вызываем
ProcessInfo.processInfo.operatingSystemVersionString
Теперь этот ProcessInfo специфичен для macOS. Прочтите «док. здесь". Согласно документам:
operatingSystemVersionString
Строка, содержащая версию операционной системы, в которой выполняется процесс.
Результат собирается и передается через FlutterResult ... Согласно документации,
FlutterResult: обратный вызов результата вызова метода.
Используется для отправки результата вызова метода обратно вызывающему Flutter. Также используется в двойной емкости для обработки результата вызова метода, полученного от Flutter.
Использование плагина Desktop в приложении Flutter
Давайте использовать созданный выше плагин в нашем настольном приложении…
Шаги:
- Откройте
pubspec.yaml
нашего настольного приложения Flutter и включите зависимость плагина как
... dependencies: init_dsktp_plugin: git: url: https://github.com/AseemWangoo/plugins.git path: ./init_dsktp_plugin ...
По умолчанию исходный код берется из ветки master
.
2. Используйте плагин, как и любую другую зависимость…
FutureBuilder<String>( future: InitDsktpPlugin.platformVersion, builder: (context, snapshot) { // YOUR LOGIC }, )
Включить поддержку Windows
Предупреждение. API подключаемых модулей, инструменты подключаемых модулей и структура подключаемых модулей для Windows совсем нестабильны. Это означает, что вам не следует публиковать реализации подключаемых модулей Windows в pub.dev, поскольку все, что опубликовано сейчас, почти наверняка не будет работать с окончательной поддержкой Flutter Windows.
Но мы разработчики, нам нравится исследовать !!!!
Шаги:
- Загрузите папку windows отсюда…. Или отдельные файлы отсюда
- Измените
ProjectName
вplugin.vcxproj
на имя вашего плагина.
В нашем случае это init_dsktp_plugin
3. Измените ProjectGuid
в plugin.vcxproj
на новый UUID. Генерируйте онлайн здесь.
4. Измените FlutterPluginName
в PluginInfo.props
на имя вашего плагина.
В нашем случае это init_dsktp_plugin
5. Найдите комментарии, содержащие ***
в файлах .h
и .cpp
, и обновите код, как описано в комментарии.
В нашем случае SAMPLE
был заменен на INIT_DSKTP_PLUGIN
, а «sample_plugin
» на «init_dsktp_plugin
».
Статьи, связанные с Flutter Desktop: