Proyecto de complemento Golang FFI para Flutter
Este proyecto es un punto de partida para un complemento FFI FFI, un paquete especializado que incluye un código nativo directamente invocado con Dart FFI.
Esta plantilla utiliza la siguiente estructura:
src : contiene el código fuente de Golang con Makefile que compila la biblioteca de código nativo para las diversas plataformas de destino.
lib : contiene el código DART que define la API del complemento y que llama al código nativo usando dart:ffi .
Carpetas de plataforma ( android , ios , windows , etc.): contiene los archivos de compilación para construir y agrupar la biblioteca de código nativo con la aplicación de la plataforma.
El pubspec.yaml especifica los complementos FFI de la siguiente manera:
plugin :
platforms :
some_platform :
ffiPlugin : trueEsta configuración invoca la compilación nativa para las diversas plataformas de destino y agrupa los binarios en aplicaciones Flutter utilizando estos complementos FFI.
Esto se puede combinar con DartPluginClass, como cuando FFI se usa para la implementación de una plataforma en un complemento federado:
plugin :
implements : some_other_plugin
platforms :
some_platform :
dartPluginClass : SomeClass
ffiPlugin : trueUn complemento puede tener canales de FFI y método:
plugin :
platforms :
some_platform :
pluginClass : SomeName
ffiPlugin : trueLos sistemas de construcción nativos que son invocados por complementos FFI (y canal de método) son:
Para usar el código nativo, se necesitan enlaces en DART. Para evitar escribirlos a mano, se generan a partir del archivo de encabezado ( src/libsum.h ) por package:ffigen . Regenere las vinculaciones ejecutando flutter pub run ffigen --config ffigen.yaml .
Las funciones nativas muy cortas se pueden invocar directamente de cualquier aislado. Por ejemplo, vea sum en lib/native_ffi.dart .