Proyek Plugin Golang FFI untuk Flutter
Proyek ini adalah titik awal untuk plugin FFI Flutter, paket khusus yang mencakup kode asli yang langsung dipanggil dengan DART FFI.
Template ini menggunakan struktur berikut:
src : Berisi kode sumber Golang dengan Makefile yang mengkompilasi pustaka kode asli untuk berbagai platform target.
lib : Berisi kode panah yang mendefinisikan API plugin, dan yang memanggil kode asli menggunakan dart:ffi .
Folder Platform ( android , ios , windows , dll.): Berisi file build untuk membangun dan menggabungkan pustaka kode asli dengan aplikasi platform.
pubspec.yaml menentukan plugin FFI sebagai berikut:
plugin :
platforms :
some_platform :
ffiPlugin : trueKonfigurasi ini memohon build asli untuk berbagai platform target dan mengikat binari dalam aplikasi flutter menggunakan plugin FFI ini.
Ini dapat dikombinasikan dengan dartpluginclass, seperti ketika FFI digunakan untuk implementasi satu platform dalam plugin federasi:
plugin :
implements : some_other_plugin
platforms :
some_platform :
dartPluginClass : SomeClass
ffiPlugin : truePlugin dapat memiliki saluran FFI dan metode:
plugin :
platforms :
some_platform :
pluginClass : SomeName
ffiPlugin : trueSistem pembuatan asli yang dipanggil oleh plugin FFI (dan Metode Channel) adalah:
Untuk menggunakan kode asli, binding di DART diperlukan. Untuk menghindari menulis ini dengan tangan, mereka dihasilkan dari file header ( src/libsum.h ) dengan package:ffigen . Regenerasi binding dengan menjalankan flutter pub run ffigen --config ffigen.yaml .
Fungsi asli yang sangat singkat dapat langsung dipanggil dari isolat apa pun. Misalnya, lihat sum di lib/native_ffi.dart .