Проект плагина Golang FFI для Flutter
Этот проект является отправной точкой для плагина Flutter FFI, специализированного пакета, который включает в себя собственный код, непосредственно вызываемый DART FFI.
Этот шаблон использует следующую структуру:
src : содержит исходный код Golang с MakeFile, который компилирует библиотеку собственной коды для различных целевых платформ.
lib : содержит код DART, который определяет API плагина и который вызывает нативный код с помощью dart:ffi .
Папки платформы ( android , ios , windows и т. Д.): Содержит файлы сборки для построения и объединения библиотеки собственной кода с приложением платформы.
pubspec.yaml указывает плагины FFI следующим образом:
plugin :
platforms :
some_platform :
ffiPlugin : trueЭта конфигурация вызывает нативную сборку для различных целевых платформ и объединяет двоичные файлы в приложениях Flutter, используя эти плагины FFI.
Это можно объединить с Dartpluginclass, например, когда FFI используется для реализации одной платформы в федеративном плагине:
plugin :
implements : some_other_plugin
platforms :
some_platform :
dartPluginClass : SomeClass
ffiPlugin : trueПлагин может иметь как FFI, так и метод каналы:
plugin :
platforms :
some_platform :
pluginClass : SomeName
ffiPlugin : trueНативные системы сборки, которые вызываются плагинами FFI (и методом), являются:
Для использования нативного кода необходимы привязки в ДАРТ. Чтобы не записать их вручную, они генерируются из файла заголовка ( src/libsum.h ) по package:ffigen . Регенерируйте привязки, запустив flutter pub run ffigen --config ffigen.yaml .
Очень короткие нативные функции могут быть непосредственно вызваны из любого изолята. Например, см. sum в lib/native_ffi.dart .