Создайте подключаемый модуль Flutter Desktop!

Как написать свой собственный плагин Flutter Desktop? Хм….

Все в одном ресурсе Flutter: https://flatteredwithflutter.com/flutter-desktop-plugin/

Предварительные требования…

Если вы еще не знакомы с Flutter Desktop и хотите сначала настроить, ознакомьтесь с этой статьей здесь…

Начать…

В конце этой статьи вы сможете создавать свои плагины для рабочего стола….

Мы разделим эту статью на:

  1. Создание подключаемого модуля рабочего стола
  2. Использование плагина Desktop в приложении Flutter
  3. Включить поддержку 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 .. Этот файл - мозг плагина ...

Шаги:

  1. Зарегистрируйте плагин с каналом метода, как указано в файле dart .. (см. Выше)

Примечание. Смотрите, что канал метода такой же, как и у файла dart.

2. Реализуйте метод ..

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

Для нашего плагина у нас есть только getPlatformVersion. Внутри этого мы вызываем

ProcessInfo.processInfo.operatingSystemVersionString

Теперь этот ProcessInfo специфичен для macOS. Прочтите «док. здесь". Согласно документам:

operatingSystemVersionString

Строка, содержащая версию операционной системы, в которой выполняется процесс.

Результат собирается и передается через FlutterResult ... Согласно документации,

FlutterResult: обратный вызов результата вызова метода.

Используется для отправки результата вызова метода обратно вызывающему Flutter. Также используется в двойной емкости для обработки результата вызова метода, полученного от Flutter.

Использование плагина Desktop в приложении Flutter

Давайте использовать созданный выше плагин в нашем настольном приложении…

Шаги:

  1. Откройте 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.

Но мы разработчики, нам нравится исследовать !!!!

Шаги:

  1. Загрузите папку windows отсюда…. Или отдельные файлы отсюда
  2. Измените 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:





Исходный код для плагина…

Исходный код для настольного приложения…