系统 API:computer 函数:
我们自己 new 一个 Isoalte 并实现通讯,多少有点麻烦,从封装的角度看其中代码基本是重复的,所以 Google 就提供了一个 API 来干这事:compute 方法
compute 方法是 Flutter 提供给我们的(记住不是 Dart),compute 内部会创建一个 Isolate 并返回计算结果,体验上和一次性线程一样,性能多少有些浪费,但是也有使用范围
compute(function,value) compute 函数接受2个参数,第一个就是新线程的核心执行方法,第二个是传递过新线程的参数,可以是任何类型的数据,几个也可以,但是要注意,function 函数的参数设计要和 value 匹配
compute 方法在 import ‘package:flutter/foundation.dart’ 这个包里面.
看例子:
import 'dart:io';
import 'dart:isolate';
import 'package:flutter/foundation.dart';
void newTask() async {
print("开始耗时计算,当前 isolate = ${Isolate.current.toString()}");
var result = await compute(getName, "name");
print(result);
}
String getName(String name) {
print("正在获取结果中...,当前 isolate = ${Isolate.current.toString()}");
sleep(Duration(seconds: 2));
return "Name";
}
THE END