flutter如何检测是否有网络连接
在Flutter开发中,如何检测设备当前是否有网络连接?有没有可靠的插件或方法可以实现实时监听网络状态变化?我试过一些方案但偶尔会出现延迟或误判,想找官方推荐的最佳实践。
2 回复
使用connectivity_plus包。监听网络状态变化,或手动检查ConnectivityResult。示例代码:
var connectivityResult = await Connectivity().checkConnectivity();
if (connectivityResult == ConnectivityResult.none) {
// 无网络
}
更多关于flutter如何检测是否有网络连接的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中检测网络连接状态,推荐使用 connectivity_plus 包。以下是实现方法:
- 添加依赖
在
pubspec.yaml中添加:
dependencies:
connectivity_plus: ^5.0.0
- 基本使用代码
import 'package:connectivity_plus/connectivity_plus.dart';
// 检查当前网络状态
Future<void> checkConnectivity() async {
final connectivityResult = await Connectivity().checkConnectivity();
if (connectivityResult == ConnectivityResult.mobile) {
print('移动网络已连接');
} else if (connectivityResult == ConnectivityResult.wifi) {
print('WiFi已连接');
} else if (connectivityResult == ConnectivityResult.ethernet) {
print('有线网络已连接');
} else if (connectivityResult == ConnectivityResult.vpn) {
print('VPN已连接');
} else if (connectivityResult == ConnectivityResult.bluetooth) {
print('蓝牙网络已连接');
} else if (connectivityResult == ConnectivityResult.other) {
print('其他网络已连接');
} else {
print('没有网络连接');
}
}
- 监听网络状态变化
// 创建监听
StreamSubscription<ConnectivityResult> subscription = Connectivity().onConnectivityChanged.listen((result) {
// 当网络状态变化时执行
if (result == ConnectivityResult.none) {
print('网络连接断开');
} else {
print('网络已恢复: $result');
}
});
// 记得在 dispose 时取消监听
@override
void dispose() {
subscription.cancel();
super.dispose();
}
重要说明:
connectivity_plus只能检测设备是否有网络连接能力,不能保证一定能访问互联网- 如需验证真实网络连通性,建议配合 http 请求测试
- Android 需要网络权限(自动处理)
- iOS 需要在
Info.plist中添加网络权限描述
这是最常用的网络连接检测方案,简单可靠且维护良好。

