Android 函数挂起用户界面
我在和Dart,AndroidStudio,Flatter合作 我需要调用一个函数来散列我的密码。哈希函数的执行需要时间。该代码应在按下时运行。功能是:Android 函数挂起用户界面,android,api,flutter,Android,Api,Flutter,我在和Dart,AndroidStudio,Flatter合作 我需要调用一个函数来散列我的密码。哈希函数的执行需要时间。该代码应在按下时运行。功能是: String getHash(Stirng输入) 我称之为a,如下所示: onPressed:{ newPass=getHash(currentPass); } 它会阻止UI线程。该函数来自某个API,因此无法编辑 我创建了一个async方法,并在async函数中调用了getHash() Future
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()
方法的函数必须是静态的,并且只能接受一个参数。由于隔离不共享内存,因此函数中使用的每个变量都必须作为参数传递。因此,如果必须向函数传递多个方法,则必须创建一个参数列表