在Flutter中,使用async/await处理异步操作非常简单,主要涉及以下步骤:
1. 声明异步函数
在函数声明前添加async关键字:
Future<void> fetchData() async {
  // 异步操作
}
2. 使用await等待异步结果
在异步操作前添加await关键字:
Future<String> getUserData() async {
  // 模拟网络请求
  var response = await http.get(Uri.parse('https://api.example.com/user'));
  return response.body;
}
3. 错误处理
使用try-catch捕获异常:
Future<void> loadData() async {
  try {
    var data = await getUserData();
    print(data);
  } catch (e) {
    print('Error: $e');
  }
}
4. 在Flutter中的实际应用
class MyWidget extends StatelessWidget {
  Future<String> _fetchData() async {
    await Future.delayed(Duration(seconds: 2)); // 模拟延迟
    return 'Data loaded';
  }
  @override
  Widget build(BuildContext context) {
    return FutureBuilder<String>(
      future: _fetchData(),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return CircularProgressIndicator();
        }
        if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}');
        }
        return Text('Data: ${snapshot.data}');
      },
    );
  }
}
5. 并行执行多个异步任务
使用Future.wait:
Future<void> loadMultipleData() async {
  var results = await Future.wait([
    getUserData(),
    getPosts(),
    getSettings()
  ]);
  print('All data loaded: $results');
}
关键要点:
- async函数返回- Future对象
- await只能在- async函数中使用
- 使用FutureBuilder在UI中处理异步状态
- 记得处理异常情况
这样就能在Flutter中优雅地处理异步操作,避免回调地狱,保持代码清晰易读。