Flutter 我可以传递BuildContext进行计算吗?
可以在函数内部使用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
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