multithreading - 如果参数不是原语,则不调用颤振计算函数?
问题描述
我试图将地图发送到计算机,但从未调用计算机。奇怪的是,如果我用 int 替换 Map,它可以工作:
void A()
{
var map=Map();
map["p1"]=90;
D("before compute");
var r1 = await compute(p1, 10);
D("after compute(p1) : $r1");
var r2 = await compute(p2, map);
// code never reaches here!
D("after compute(p2) : $r2");
}
static int p2(Map p)
{
return p["p1"]*10;
}
static int p1(int z)
{
return z*10;
}
输出是: 在计算(p1)之后:100
解决方案
Flutter 计算方法使用 Isolates 及其唯一的传输(null、num、bool、double、String)类型。
https://api.flutter.dev/flutter/dart-isolate/SendPort/send.html
推荐阅读
- flutter - 在颤动中,当按下活动标签栏按钮时,有一种方法可以重建当前标签
- azure-devops - 如何设置 Azure DevOps 管道,以便在我推送到 BitBucket 存储库时触发?
- python - 如何使用 Kivy 和 Python 使我的点“ping”?
- android - 无法解析 Android 3.6.1 中的符号内容
- python - Astropy:将 FITS 表拆分为训练和测试集
- javascript - JavaScript array.includes 对象的奇怪行为
- python - 使用 scrapy 进行网页抓取:空结果
- c# - 以 json 格式表示整数列表
- postgresql - 在两个表之间查找相关列
- python - OpenCV(-215:断言失败)!_src.empty()在函数'cvtColor