Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何使用方法通道将任何T类型的列表从Android发送到颤振端?_Dart_Flutter - Fatal编程技术网

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

Dart 如何使用方法通道将任何T类型的列表从Android发送到颤振端?,dart,flutter,Dart,Flutter,我想从本机端检索一些带有其他信息(如姓名和id)的联系人,以便进行颤振。但不允许任何自定义类型的列表。 有人能提出解决办法吗 在安卓方面--- if(methodCall.method.equals(“fetch_contacts”)){ List contactList=getContacts(); 结果:成功(联系人列表); }否则{ result.notImplemented(); } 在颤振侧-- List contacts List=await methodChannel.invok

我想从本机端检索一些带有其他信息(如姓名和id)的联系人,以便进行颤振。但不允许任何自定义类型的列表。 有人能提出解决办法吗

在安卓方面---

if(methodCall.method.equals(“fetch_contacts”)){
List contactList=getContacts();
结果:成功(联系人列表);
}否则{
result.notImplemented();
}
在颤振侧--

List contacts List=await methodChannel.invokeListMethod('fetch_contacts');

上面的android端代码给出了IllegalStateException,因为它不能发送联系人模型。

联系人是Java对象,因此不能通过方法通道发送。在飞镖末端会变成什么?您可以创建一个Dart类,也称为
Contact
,但即使这样,您也无法发送它。您需要定义一种将对象序列化/反序列化为将遍历方法通道的部分的方法。(有关可以交叉的基本对象,请参见。)

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

  • JSON—您可以在Java中将其转换为JSON,通过方法通道发送字符串列表,然后将这些字符串解码为Dart对象列表。(或者发送一个表示对象列表的JSON字符串。)

  • 映射-您可以将每个对象转换为字符串-值对的映射(值需要是可接受的类型之一-请参见上面的链接),并发送映射列表


是的,我通过使用JsonObject列表解决了这个问题。因为我可以在dart端解码json。这个JsonObject列表可以通过将它们转换为字符串来发送。顺便说一句,谢谢你的帮助,伙计!
 if (methodCall.method.equals("fetch_contacts")) {
        List<Contact> contactList = getContacts();
        result.success(contactList);
 } else {
        result.notImplemented();
  }
List<dynamic> contactsList = await methodChannel.invokeListMethod('fetch_contacts');