Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
Android 函数挂起用户界面_Android_Api_Flutter - Fatal编程技术网

Android 函数挂起用户界面

Android 函数挂起用户界面,android,api,flutter,Android,Api,Flutter,我在和Dart,AndroidStudio,Flatter合作 我需要调用一个函数来散列我的密码。哈希函数的执行需要时间。该代码应在按下时运行。功能是: String getHash(Stirng输入) 我称之为a,如下所示: onPressed:{ newPass=getHash(currentPass); } 它会阻止UI线程。该函数来自某个API,因此无法编辑 我创建了一个async方法,并在async函数中调用了getHash() Future

我在和Dart,AndroidStudio,Flatter合作

我需要调用一个函数来散列我的密码。哈希函数的执行需要时间。该代码应在按下时运行。功能是:

String getHash(Stirng输入)

我称之为a,如下所示:

onPressed:{
           newPass=getHash(currentPass);
          }
它会阻止UI线程。该函数来自某个API,因此无法编辑

我创建了一个
async
方法,并在
async
函数中调用了
getHash()

Future<String> asyncMethodToGetHash(String input) async{
     return await geHash(input);
}
Future asyncMethodToGetHash(字符串输入)异步{
返回等待geHash(输入);
}
但它仍然会阻塞UI线程。我应该如何调用它以使UI不被阻塞?

您可以使用颤振提供的
compute()
方法,该方法将在单独的隔离中运行代码(dart相当于线程)。大概是这样的:

静态字符串getHash(字符串输入){
return hash(input);//在这里计算hash的代码。
}
字符串计算哈希(字符串输入){
返回等待计算(getHash,input);
}
请记住,传递给
compute()
方法的函数必须是静态的,并且只能接受一个参数。由于隔离不共享内存,因此函数中使用的每个变量都必须作为参数传递。因此,如果必须向函数传递多个方法,则必须创建一个参数列表