
一、Future概述
Future是Dart中处理异步操作的核心类型,表示一个可能在未来某个时间完成的操作。
未完成
成功
失败
异步操作开始
返回Future
操作状态
Pending
Completed with Value
Completed with Error
| 状态 | 说明 | 值 |
|---|---|---|
| Pending | 操作进行中 | 无 |
| Completed | 操作已完成 | Value 或 Error |
二、示例代码
dart
Future<String> _fetchData() async {
await Future.delayed(const Duration(seconds: 2));
if (DateTime.now().second % 3 == 0) {
throw Exception('网络请求失败');
}
return '数据加载成功: ${DateTime.now()}';
}
void _loadData() {
setState(() {
_isLoading = true;
_error = null;
_data = null;
});
_fetchData().then((data) {
setState(() {
_data = data;
_isLoading = false;
});
}).catchError((error) {
setState(() {
_error = error.toString();
_isLoading = false;
});
});
}
三、工作流程
数据源 Future对象 界面 用户 数据源 Future对象 界面 用户 点击加载数据 调用_fetchData() 请求延迟2秒 返回数据 then回调 更新状态 显示结果
四、状态管理
| 状态 | UI显示 | 操作 |
|---|---|---|
| 初始 | 图标 + 提示 | 显示加载按钮 |
| 加载中 | 进度条 | 禁用按钮 |
| 成功 | 数据内容 | 显示数据 |
| 失败 | 错误信息 | 显示重试按钮 |
五、最佳实践
是
否
开始
显示Loading
执行异步操作
成功?
显示数据
显示错误
用户可重试
要点:
- 始终检查mounted状态
- 提供清晰的错误反馈
- 使用setState更新UI状态
- 支持重试机制
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net