首页 > 解决方案 > 如果参数不是原语,则不调用颤振计算函数?

问题描述

我试图将地图发送到计算机,但从未调用计算机。奇怪的是,如果我用 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

标签: multithreadingflutterdart-isolates

解决方案


Flutter 计算方法使用 Isolates 及其唯一的传输(null、num、bool、double、String)类型。

https://api.flutter.dev/flutter/dart-isolate/SendPort/send.html


推荐阅读