resolveModes static method

ConnectionResolution resolveModes(
  1. List<ConnectivityResult> results
)

Implementation

static ConnectionResolution resolveModes(List<ConnectivityResult> results) {
  if (results.isEmpty ||
      (results.length == 1 && results.first == ConnectivityResult.none)) {
    return const ConnectionResolution(
      primary: ConnectionMode.none,
      active: [ConnectionMode.none],
    );
  }

  final activeModes = results
      .where((r) => r != ConnectivityResult.none)
      .map(mapResult)
      .toSet()
      .toList();

  if (activeModes.isEmpty) {
    return const ConnectionResolution(
      primary: ConnectionMode.none,
      active: [ConnectionMode.none],
    );
  }

  ConnectionMode primary;
  if (activeModes.contains(ConnectionMode.ethernet)) {
    primary = ConnectionMode.ethernet;
  } else if (activeModes.contains(ConnectionMode.wifi)) {
    primary = ConnectionMode.wifi;
  } else if (activeModes.contains(ConnectionMode.mobile)) {
    primary = ConnectionMode.mobile;
  } else if (activeModes.contains(ConnectionMode.vpn)) {
    primary = ConnectionMode.vpn;
  } else if (activeModes.contains(ConnectionMode.bluetooth)) {
    primary = ConnectionMode.bluetooth;
  } else {
    primary = activeModes.first;
  }

  return ConnectionResolution(primary: primary, active: activeModes);
}