blob: e7eb8969231a6cf0c3bb79fdb0797ebd5634f7ff [file] [log] [blame]
import 'dart:html' as html show NetworkInformation;
import 'package:connectivity_platform_interface/connectivity_platform_interface.dart';
/// Converts an incoming NetworkInformation object into the correct ConnectivityResult.
ConnectivityResult networkInformationToConnectivityResult(
html.NetworkInformation? info,
) {
if (info == null) {
return ConnectivityResult.none;
}
if (info.downlink == 0 && info.rtt == 0) {
return ConnectivityResult.none;
}
if (info.effectiveType != null) {
return _effectiveTypeToConnectivityResult(info.effectiveType!);
}
if (info.type != null) {
return _typeToConnectivityResult(info.type!);
}
return ConnectivityResult.none;
}
ConnectivityResult _effectiveTypeToConnectivityResult(String effectiveType) {
// Possible values:
/*'2g'|'3g'|'4g'|'slow-2g'*/
switch (effectiveType) {
case 'slow-2g':
case '2g':
case '3g':
return ConnectivityResult.mobile;
default:
return ConnectivityResult.wifi;
}
}
ConnectivityResult _typeToConnectivityResult(String type) {
// Possible values:
/*'bluetooth'|'cellular'|'ethernet'|'mixed'|'none'|'other'|'unknown'|'wifi'|'wimax'*/
switch (type) {
case 'none':
return ConnectivityResult.none;
case 'bluetooth':
case 'cellular':
case 'mixed':
case 'other':
case 'unknown':
return ConnectivityResult.mobile;
default:
return ConnectivityResult.wifi;
}
}