所以我基本上有一个带有update()
方法的简单类。但是由于该update()
方法可以进行一些数学运算,因此我想使用compute()
使其在另一个Isolate
中运行。计划是在update()
中运行Isolate
方法,并返回更新后的对象,如下所示:
compute(updateAsset, asset).then((value) => asset = value);
Asset updateAsset(Asset asset) {
asset.update();
return asset;
}
但随后出现此错误:
ArgumentError (Invalid argument(s): Illegal argument in isolate message : (object extends NativeWrapper - Library:'dart:ui' Class: Path))
是否有可能将对象发送到Isolate
的方法,还是我必须将该Asset
的每个值作为Integer
发送,创建一个新的对象并返回?
答案 0 :(得分:1)
根据docs:
消息的内容可以是:原始值(null,num,bool,double,String),SendPort的实例以及元素为这些元素的列表和映射。列表和地图也可以循环。
所以我看到了两个可以使用的选项。
Map
或List
中以整数或其他基元形式发送每个值。String
。您可以使用jsonEncode
函数对对象进行编码,然后将其返回的String
发送到隔离区,然后在必要时将其解码回对象。