[英]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>
模式是有意义的,应用程序应该对处理的某些点做出反应,因此传入回调是有意义的。
问题:
如何将函数传递给Java代码? 据我所知 Flutter 中所有 Java 可传递的方法参数都是可序列化的对象
(不太重要/可选)如何返回 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.