flutter开发Invalid argument(s): Illegal argument in isolate message: object is unsendable - Library:'dart:async' Class
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传递过去
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2021-09-09 android开发jni开发遍历文件夹下的文件以及目录
2020-09-09 android开发文字转bitmap的实现