checkConnection method
采集一次网络连接快照 / Captures one network connection snapshot.
Implementation
Future<NetworkConnectionInfo> checkConnection({
bool includeNativeDetails = true,
bool probeReachability = false,
Duration probeTimeout = const Duration(seconds: 3),
}) async {
final transports = await _safeTransports();
final types = transports
.map(NetworkType.fromRaw)
.where((type) => type != NetworkType.none)
.toList(growable: false);
Map<String, Object?>? native;
if (includeNativeDetails) {
native = await _safeNativeDetails();
}
final info = NetworkConnectionInfo(
isConnected: types.isNotEmpty,
type: _resolveType(types),
ssid: _asString(native?['ssid']),
signalStrength: (native?['signalStrength'] as num?)?.toInt(),
ipAddress: _asString(native?['ipAddress']),
ipv6Address: _asString(native?['ipv6Address']),
gateway: _asString(native?['gateway']),
macAddress: _asString(native?['macAddress']),
isVpn: native?['isVpn'] == true || types.contains(NetworkType.vpn),
timestamp: DateTime.now(),
);
if (!probeReachability) return info;
return info.copyWith(isReachable: await _safeProbe(probeTimeout));
}