如何将函数作为参数从Dart / Flutter传递到Android本机代码?
我想创建一个可以从Flutter调用的基于Java的SDK,Flutter端需要通过提供在处理的不同阶段执行的回调来插入SDK,理想情况是:
Future<Result> = doPayment( amount: 100.00,
currency: 'USD',
onPasscodeEntry: () => _renderInputBox(),
onValidation: () => _doValidation()
);
处理本身需要一些时间等,因此某种Future<PaymentResult>
模式很有意义,应用程序应对处理的某些点做出反应,因此传入回调是有意义的。
问题:
如何将函数传递给Java代码?据我所知,Flutter中所有Java可以通过的方法参数都是可序列化的对象
(不太关键/可选)如何返回POJO并在Dart中处理它?从规范来看,我应该将结果编码为(在Java中)
ArrayList
/HashMap
或作为JSON
字符串,然后在Dart中创建等效的构造器,该构造器采用List
/Map
?这似乎有点笨拙,所以我问是否有更简单的方法,最好不要维护同一对象的Java和Dart变体
回答:
您无法传递函数。
您可以创建从函数名称到函数引用的映射,然后传递函数名称并在映射中按名称查找函数并调用它。
您也不能传递POJO。
您需要将其序列化为JSON(或其他受支持的格式),并在通道的另一侧反序列化。为此,您需要在Dart和Java中实现POJO类。
像protobuf或flatbuffer之类的程序包允许根据一种简化的语言为不同的语言生成代码,以指定数据结构。
以上是 如何将函数作为参数从Dart / Flutter传递到Android本机代码? 的全部内容, 来源链接: utcz.com/qa/406200.html