异步编程:Future、async/await 与 Stream

理解 Dart 异步模型,掌握 FutureBuilder、StreamBuilder 和错误处理。

异步Future

为什么 Flutter 离不开异步

网络请求、文件读写、数据库、定位、蓝牙、支付 SDK 都是异步操作。Dart 使用 Future 表示未来完成的一次结果,使用 Stream 表示持续产生的多次结果。

Future<String> loadUserName() async {
  await Future.delayed(const Duration(milliseconds: 300));
  return 'rubble';
}

FutureBuilder 适合简单页面

FutureBuilder<String>(
  future: loadUserName(),
  builder: (context, snapshot) {
    if (snapshot.connectionState != ConnectionState.done) {
      return const CircularProgressIndicator();
    }
    if (snapshot.hasError) {
      return Text('加载失败:${snapshot.error}');
    }
    return Text('你好,${snapshot.data}');
  },
)

实战建议

  • 不要在 build 里直接创建 Future,否则重建时可能重复请求。
  • Future 可以放在 initState 初始化,或者交给状态管理层。
  • Stream 适合 WebSocket、实时消息、倒计时、数据库监听。
  • 所有异步请求都要考虑 loading、empty、error、success 四种状态。

官方参考