为什么 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 四种状态。