繁体   English   中英

如何将函数作为参数从 Dart/Flutter 传递给 Android 本机代码?

[英]How to pass functions as arguments from Dart/Flutter to Android native code?

我想创建一个可以从 Flutter 调用的基于 Java 的 SDK,Flutter 端需要通过提供在处理的不同阶段执行的回调来插入 SDK,理想情况下是这样的:

Future<Result> = doPayment(
  amount: 100.00, 
  currency: 'USD', 
  onPasscodeEntry: () => _renderInputBox(), 
  onValidation: () => _doValidation()
);

处理本身需要一些时间等,因此Future<PaymentResult>模式是有意义的,应用程序应该对处理的某些点做出反应,因此传入回调是有意义的。

问题:

  1. 如何将函数传递给Java代码? 据我所知 Flutter 中所有 Java 可传递的方法参数都是可序列化的对象

  2. (不太重要/可选)如何返回 POJO 并在 Dart 中处理它? 规范来看,我应该(在 Java 中)将结果编码为ArrayList / HashMap或作为JSON字符串,然后在 Dart 中创建等效的构造函数,该构造函数接受List / Map 这似乎有点笨拙,所以我问是否有更简单的方法,最好不要维护同一对象的 Java 和 Dart 变体

你不能传递一个函数。

您可以创建从函数名称到函数引用的映射,然后传递函数名称并在映射中按名称查找函数并调用它。

你也不能通过 POJO。

您需要将其序列化为 JSON(或其他支持的格式)并在通道的另一端反序列化。 为此,您需要在 Dart 和 Java 中实现 POJO 类。

protobuf 或 flatbuffer 等包允许基于简化的语言为不同的语言生成代码以指定数据结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM