如何通过Dart FFI实现原生代码对Dart类的访问?
Dart FFI 替代JNI对象交互方案咨询
我正在从Android/JNI迁移至Flutter/Dart/FFI构建原生应用。此前在Android中,我有一个会在程序生命周期内被修改的Java类ScanningHelper.java,在原生初始化时传入jobject类型对象,即可在C/C++代码中调用其成员函数或直接访问变量(取决于访问权限)。
请问Dart FFI是否支持类似操作?目前我想到的方案是在原生层创建结构体,通过多个函数完成数据读写,但这会产生大量代码,还需处理每次返回string/const char*时Dart端的内存清理工作。
希望能获得无需在两种语言中重复实现的方案指引,例如类似以下JNI中的实现方式:
// ScanningHelper.java public class ScanningHelper { private String _mediaStorageDirectory; public void setMediaStorageDirectory(String path) { _mediaStorageDirectory = path; } public String getAppMediaStorageDirectory() { return _mediaStorageDirectory; } public double latitude; public double longitude; ... byte[] image1Bytes; }
我定义了如getStringFromObjectMethod这类可跨类和返回类型复用的标准方法:
// JNIMethods.cpp std::string mediaDirectory = JNIMethods::getStringFromObjectMethod(jniEnv,_scanningHelper,"getAppMediaStorageDirectory"));
内容的提问来源于stack exchange,提问作者banerjk
相关产品推荐
相关产品推荐

