Flutter 颤振:运行多种方法
我有个大问题。如果我想加密我的视频文件,我的应用程序将冻结,直到该方法完成。但是没有错误。我如何编码我的应用程序不冻结。谢谢Flutter 颤振:运行多种方法,flutter,dart,dart-isolates,Flutter,Dart,Dart Isolates,我有个大问题。如果我想加密我的视频文件,我的应用程序将冻结,直到该方法完成。但是没有错误。我如何编码我的应用程序不冻结。谢谢 Future sifrele() async { String realPath = "/storage/emulated/0/Android/data/com.android.xxxx/files"; var crypt = AesCrypt('sefa'); try { crypt.setOverwrite
Future sifrele() async {
String realPath =
"/storage/emulated/0/Android/data/com.android.xxxx/files";
var crypt = AesCrypt('sefa');
try {
crypt.setOverwriteMode(AesCryptOwMode.on);
String encFilepaths = await crypt.encryptFile(
realPath + '/WhatCarCanYouGetForAGrand.mp4',
realPath + '/video.mp4.aes');
print('The encryption has been completed successfully.');
//print('Encrypted file: $encFilepath');
} on AesCryptException catch (e) {
if (e.type == AesCryptExceptionType.destFileExists) {
print('The encryption has been completed unsuccessfully.');
}
return;
}
}
试试这个。
如果你把加密代码放在隔离的地方,也许会有用。
为此,请使用计算方法
void _startEncrypting()
{
compute(sifrele, /** Here put your parameters if you need them **/);
}
sifrele() async {
String realPath = "/storage/emulated/0/Android/data/com.android.xxxx/files";
var crypt = AesCrypt('sefa');
try {
crypt.setOverwriteMode(AesCryptOwMode.on);
String encFilepaths = await crypt.encryptFile(
realPath + '/WhatCarCanYouGetForAGrand.mp4',
realPath + '/video.mp4.aes');
print('The encryption has been completed successfully.');
//print('Encrypted file: $encFilepath');
} on AesCryptException catch (e) {
if (e.type == AesCryptExceptionType.destFileExists) {
print('The encryption has been completed unsuccessfully.');
}
return;
}
}将函数的函数类型从
Future
更改为FutureOr
,为函数添加一个参数(即使您不需要)
并使用compute。它将完美地工作
以前
Future sifrel()异步{
之后
futureorsifrele(字符串段)异步{
计算
doTheEncryption() {
compute(sifrele, 'Pass the value of the parameter here if you need it');
}
另一件重要的事情是函数的定义sifreel
必须是顶级的,这意味着不在类内,而是放在类外。
函数doTheEncryption()(或者你叫它什么名字)可能在类内部没有问题。你应该使用隔离来进行此加密如果你有一个代码示例,你能给我分享一下吗:)它给我带来了这个错误。“E/flatter(14930):[错误:flatter/lib/ui/ui_dart_state.cc(166)]未处理的异常:“Future”类型不是类型的子类型(Type)=>dynamic'”非常感谢。它很有效。但我在标题中添加了“static”。它是“static FutureOr sifree(String para)async{}”