使用flutter控件dart_ping实现,可以监测到网速较差或网络断开的情况;
要在 iOS 上使用 dart_ping,请将dart_ping_ios包添加为依赖项并在初始化 Ping 之前注册 iOS 插件。
dart_ping_ios控件地址:dart_ping_ios | Flutter Package
dart_ping控件地址:dart_ping | Dart Package
1.下载插件
1在配置文件pubbspec.yaml中添加以下代码,注意版本选择目前flutterSDK支持的版本;然后运行flutter pub get同步插件;
dart_ping_ios: ^1.0.0
dart_ping: ^6.1.0
2.注册 iOS控件dart_ping_ios
如果不需要支持ios设备可跳过此步
一定要在 dart_ping初始化前注册它;
//在dart_ping初始化前添加此行代码
DartPingIOS.register();
3.使用dart_ping
/*1.初始化*/
final ping = Ping(
/*必传参数*/
'baidu.com',//参数1:host
/*可选参数*/
count: 50,//参数2:需要ping的次数,默认无限次
interval: 1,//参数3:每几秒ping一次,默认1次
);
//timeout: 2,//参数4:几秒超时,默认2秒
//ttl: 255,//参数5:可ping的路由器数量,默认255个
//ipv6: false,//参数6:是否ipv6,默认false
//PingParser? parser,//参数7:解析器,默认不传
//Encoding encoding = const Utf8Codec(),//参数7:编码,默认Utf8
/*2.开始监测网络延迟状态*/
ping.stream.listen((event) {
debugPrint('输出监测到的网络状态信息===========$event');
//输出数据内容-->网络正常
//PingResponse(seq:1,ttl:54,time:38.112 ms)
//seq已经ping的次数
//ttl路由器数量
//time延迟的毫秒数
//输出数据内容-->网络较差或网络断开
//PingResonse(response:PingResponse(seq:1),error:RequestTimedOut)
if (event.error != null) {
print("网络较差或网络断开")
}
/*3.停止监听*/
//建议在app销毁时停止ping进程
//ping.stop();
});