如何使用方法通道将任何T类型的列表从Android发送到Flutter端?

问题描述 投票:1回答:1

我想从原生端到Flutter检索一些其他信息,如名称和ID。但是不允许任何自定义类型的列表。有人可以建议解决方案。?

在Android方面---

 if (methodCall.method.equals("fetch_contacts")) {
        List<Contact> contactList = getContacts();
        result.success(contactList);
 } else {
        result.notImplemented();
  }

在颤抖的一面 -

List<dynamic> contactsList = await methodChannel.invokeListMethod('fetch_contacts');

以上android端代码给出了IllegalStateException,因为它无法发送Contact模型。

dart flutter
1个回答
0
投票

Contact是一个Java对象,因此无法通过方法通道发送。它会在Dart结束时变成什么?您可以创建一个Dart类,也称为Contact,但即便如此,您也无法发送它。您需要定义一种方法,将对象序列化/反序列化为将遍历方法通道的部分。 (有关可以穿越的基本对象,请参阅StandardMessageCodec。)

以下是一些序列化对象的可能方法:

  • JSON - 您可以在Java中将其转换为JSON,在方法通道中发送字符串列表,然后将这些字符串解码为Dart对象列表。 (或者发送一个表示对象列表的JSON字符串。)
  • 地图 - 您可以将每个对象转换为字符串 - 值对的映射(值必须是可接受的类型之一 - 请参阅上面的链接)并发送映射列表。
© www.soinside.com 2019 - 2024. All rights reserved.