โครงการปลั๊กอิน Golang FFI สำหรับ Flutter
โครงการนี้เป็นจุดเริ่มต้นสำหรับปลั๊กอิน FFI 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 (และ Method Channel) คือ:
ในการใช้รหัสดั้งเดิมจำเป็นต้องมีการผูกใน DART เพื่อหลีกเลี่ยงการเขียนด้วยมือพวกเขาจะถูกสร้างขึ้นจากไฟล์ส่วนหัว ( src/libsum.h ) โดย package:ffigen สร้างการผูกใหม่โดยใช้ flutter pub run ffigen --config ffigen.yaml
ฟังก์ชั่นดั้งเดิมที่ดำเนินการสั้นมากสามารถเรียกใช้โดยตรงจากไอโซเลทใด ๆ ตัวอย่างเช่นดู sum ใน lib/native_ffi.dart