Invalid argument(s): Illegal argument in isolate message: object is unsendable - Library:'dart:async' Class
1. 问题原因:
使用flutter isolate的时候新开的isolate访问了其他isolate的变量导致的
比如下面例子是错误的写法:
final zhangsan = "张三"; // 这里变量是 主隔离区 声明的变量
//run方法在新开的isolate(compute新开的 子隔离区 )中运行,不是在 主隔离区 运行
void run(String name){
debugPrint(zhangsan); //这里是 子隔离区,使用 主隔离区 的变量zhangsan,导致了object is unsendable错误
}
compute(run,"");//compute会新开一个isolate(这里称为 子隔离区)执行run方法
1. 解决方法:
在子隔离区的方法,不能直接访问主隔离的变量的,但是compute方法不是有个传递参数的地方吗?我们只能通过传参的方式把需要访问的变量传递过去给子隔离区的方法使用
比如下面例子是正确的写法:
final zhangsan = "张三"; // 这里变量是 主隔离区 声明的变量
//run方法在新开的isolate(compute新开的 子隔离区 )中运行,不是在 主隔离区 运行
void run(String name){
debugPrint(name); //这里是 子隔离区,不能直接使用 主隔离区 的zhangsan ,但是可以访问主隔离区传递过来的变量name
}
compute(run,zhangsan);//compute会新开一个isolate(这里称为 子隔离区)执行run方法,这里同时将 主隔离区 的变量zhangsan传递过去
标签:run,变量,Illegal,isolate,隔离区,argument,compute,zhangsan,Class
From: https://www.cnblogs.com/yongfengnice/p/18404991