我想从本地到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模型。
答案 0 :(得分:0)
Contact
是一个Java对象,因此不能跨方法通道发送。在Dart端会变成什么?您可以创建一个Dart类,也称为Contact
,但是即使这样您也无法发送它。您需要定义一种将对象序列化/反序列化为将遍历方法通道的部分的方法。 (有关可以交叉的基本对象,请参见StandardMessageCodec。)
以下是一些可能的方法来序列化对象:
JSON-您可以将其转换为Java中的JSON,在方法通道中发送字符串列表,然后将这些字符串解码为Dart对象列表。 (或发送一个表示对象列表的JSON字符串。)
地图-您可以将每个对象转换为字符串-值对的地图(值必须是一种可接受的类型-请参见上面的链接)并发送地图列表。