Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 我可以传递BuildContext进行计算吗?_Flutter_Dart_Dart Isolates - Fatal编程技术网

Flutter 我可以传递BuildContext进行计算吗?

Flutter 我可以传递BuildContext进行计算吗?,flutter,dart,dart-isolates,Flutter,Dart,Dart Isolates,可以在函数内部使用BuildContext吗 Future getFuture()异步{ int r=等待计算(计数、上下文); 返回r; } 静态整数计数(BuildContext上下文){ //非常慢的东西。 返回10; } 尝试将上下文传递到计算时,我收到以下错误: I/flutter ( 8764): AsyncSnapshot<int>(ConnectionState.done, null, Invalid argument(s): Illegal argument in

可以在函数内部使用BuildContext吗

Future getFuture()异步{
int r=等待计算(计数、上下文);
返回r;
}
静态整数计数(BuildContext上下文){
//非常慢的东西。
返回10;
}
尝试将
上下文
传递到
计算
时,我收到以下错误:

I/flutter ( 8764): AsyncSnapshot<int>(ConnectionState.done, null, Invalid argument(s): Illegal argument in isolate message : (object is a closure - Function '_handleBuildScheduled@374399801':.))
I/flatter(8764):异步快照(ConnectionState.done,null,无效参数):隔离消息中的非法参数:(对象是闭包-函数的_handleBuildScheduled@374399801':.))
如果我将count函数的输入更改为其他普通类,它就可以正常工作

有办法解决这个问题吗? 或者在一个应用程序中使用BuildContext是可能的吗? 谢谢

As,no-您不能将
BuildContext
发送到
compute
函数,即另一个
Isolate
compute
只是简单隔离的包装器)

可以发送和接收到的值和从中接收到的值都有限制。这些限制限制了可能的Q和R值。请参阅上的讨论

消息
Q
的值(
R
是返回值),因此受到以下限制:

message
的内容可以是:基本值(null、num、bool、double、String)、实例以及元素为其中任何一个的列表和映射。列表和映射也允许循环



如果你想了解更多关于一般分离物的信息,Flitter团队发表了一篇文章。它们还解释了隔离如何在较低级别上工作,这可能有助于您理解这些限制的原因。

问题是:您为什么要这样做?我的代码使用BuildContext计算复杂的内容。因此,您必须更改它,使其不使用
BuildContext