checkConnection method

Future<NetworkConnectionInfo> checkConnection({
  1. bool includeNativeDetails = true,
  2. bool probeReachability = false,
  3. Duration probeTimeout = const Duration(seconds: 3),
})

采集一次网络连接快照 / 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));
}