flutter如何实现ping网络检测
在Flutter中如何实现网络连接的ping检测?我需要在应用中检查某个IP地址或域名是否可达,类似于命令行中的ping功能。目前尝试了dart:io的Process.run调用系统ping命令,但在iOS上遇到权限问题。有没有跨平台的解决方案?最好能获取到具体的延迟毫秒数,并支持Android和iOS。求推荐可靠的第三方库或实现方案!
2 回复
Flutter中实现Ping网络检测,可使用dart_ping库。安装后,创建Ping实例,监听响应流,获取延迟和状态。也可用connectivity_plus检测网络连接,但无法测延迟。
更多关于flutter如何实现ping网络检测的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现网络连通性检测(类似ping功能),可以使用以下几种方法:
1. 使用 http/dio 包发送请求
import 'package:http/http.dart' as http;
Future<bool> pingNetwork(String url) async {
try {
final response = await http.get(Uri.parse(url))
.timeout(Duration(seconds: 5));
return response.statusCode == 200;
} catch (e) {
return false;
}
}
// 使用示例
bool isConnected = await pingNetwork('https://www.google.com');
2. 使用 connectivity_plus 包(推荐)
首先添加依赖:
dependencies:
connectivity_plus: ^5.0.2
实现代码:
import 'package:connectivity_plus/connectivity_plus.dart';
class NetworkUtils {
static final Connectivity _connectivity = Connectivity();
// 检查网络连接状态
static Future<bool> checkConnectivity() async {
final result = await _connectivity.checkConnectivity();
return result != ConnectivityResult.none;
}
// 监听网络状态变化
static Stream<ConnectivityResult> get connectivityStream {
return _connectivity.onConnectivityChanged;
}
}
3. 完整的网络检测工具类
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:http/http.dart' as http;
class NetworkChecker {
static Future<NetworkStatus> checkNetwork() async {
// 先检查设备网络连接
final connectivity = await Connectivity().checkConnectivity();
if (connectivity == ConnectivityResult.none) {
return NetworkStatus.disconnected;
}
// 再测试实际网络可达性
try {
final response = await http
.get(Uri.parse('https://www.google.com'))
.timeout(Duration(seconds: 5));
return response.statusCode == 200
? NetworkStatus.connected
: NetworkStatus.connectedButNoInternet;
} catch (e) {
return NetworkStatus.connectedButNoInternet;
}
}
}
enum NetworkStatus {
connected,
disconnected,
connectedButNoInternet
}
使用建议
- connectivity_plus 用于检测设备网络连接状态
- http请求 用于验证实际网络可达性
- 结合两者可以获得更准确的网络状态
这种方法比传统ping更适用于移动应用场景,且符合各平台规范。

