Projet de plugin Golang FFI pour Flutter
Ce projet est un point de départ pour un plugin FFI FFI, un package spécialisé qui comprend le code natif directement invoqué avec Dart FFI.
Ce modèle utilise la structure suivante:
src : contient le code source de Golang avec MakeFile qui compile la bibliothèque de code native pour les différentes plates-formes cibles.
lib : contient le code DART qui définit l'API du plugin et qui appelle le code natif à l'aide dart:ffi .
dossiers de plate-forme ( android , ios , windows , etc.): contient les fichiers de build pour la création et la préparation de la bibliothèque de code native avec l'application de plate-forme.
Le pubspec.yaml spécifie les plugins FFI comme suit:
plugin :
platforms :
some_platform :
ffiPlugin : trueCette configuration invoque la construction native pour les différentes plates-formes cibles et regroupe les binaires dans les applications de flottement à l'aide de ces plugins FFI.
Cela peut être combiné avec DartPluginclass, comme lorsque FFI est utilisé pour la mise en œuvre d'une plate-forme dans un plugin fédéré:
plugin :
implements : some_other_plugin
platforms :
some_platform :
dartPluginClass : SomeClass
ffiPlugin : trueUn plugin peut avoir à la fois des canaux FFI et Méthode:
plugin :
platforms :
some_platform :
pluginClass : SomeName
ffiPlugin : trueLes systèmes de construction natifs invoqués par les plugins FFI (et canal de méthode) sont:
Pour utiliser le code natif, des liaisons en fléchette sont nécessaires. Pour éviter de les écrire à la main, ils sont générés à partir du fichier d'en-tête ( src/libsum.h ) par package:ffigen . Régénérer les liaisons en exécutant flutter pub run ffigen --config ffigen.yaml .
Les fonctions natives très courtes peuvent être directement invoquées à partir de tout isolat. Par exemple, voir sum dans lib/native_ffi.dart .