FLUTTER:网络
你好,我想当我点击一个按钮时,下面的函数以非阻塞方式执行并且不会冻结 ui,问题是将它包装在 Future 中,它冻结了 ui,我甚至使用了 async_task 但它不起作用...
List<int> _compressFiles(List<Uint8List> data) {
BZip2Encoder zec = BZip2Encoder();
Archive archive = new Archive();
for (var i = 0; i < data.length; i++) {
archive.addFile(ArchiveFile(i.toString(),data[i].elementSizeInBytes,data[i]));
}
List<int> tar_data = TarEncoder().encode(archive);
List<int> tar_bz2 = BZip2Encoder().encode(tar_data);
return tar_bz2;
}
(此代码使用存档库 https://pub.dev/packages/archive)。
onpressed 函数:
onpressed: () {
//this freeze the ui for 3-4s
List<Uint8List> l = [];
for (var i in list) {
l.add(i.image);
}
compressFiles(l).then(...);
}