Flutter框架跨平台鸿蒙开发——async/await与图片下载
async/await让异步代码看起来像同步代码,提高可读性。下载策略耗时对比(5张图片,每张1秒)
·

一、async/await语法
async/await让异步代码看起来像同步代码,提高可读性。
二、顺序下载示例
Future<void> _downloadAllImages() async {
setState(() {
_isLoading = true;
_error = null;
_images.clear();
});
try {
for (int i = 0; i < 5; i++) {
final imageUrl = await _downloadImage(i);
_images.add(imageUrl);
if (mounted) setState(() {});
}
setState(() {
_isLoading = false;
});
} catch (e) {
setState(() {
_error = e.toString();
_isLoading = false;
});
}
}
三、并发下载示例
Future<void> _downloadImagesParallel() async {
setState(() {
_isLoading = true;
_error = null;
_images.clear();
});
try {
final futures = List.generate(5, (index) => _downloadImage(index));
final results = await Future.wait(futures, eagerError: true);
setState(() {
_images = results;
_isLoading = false;
});
} catch (e) {
setState(() {
_error = e.toString();
_isLoading = false;
});
}
}
四、性能对比
| 策略 | 总耗时 | 适用场景 |
|---|---|---|
| 顺序下载 | 5秒 | 有依赖关系 |
| 并发下载 | 1秒 | 独立任务 |
五、最佳实践
要点:
- 优先使用并发下载提升速度
- 及时更新UI进度
- 合理处理错误
- 注意内存占用
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
更多推荐




所有评论(0)