You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
HMG_QLine/lib/services/connectivity_service.dart

64 lines
1.7 KiB
Dart

import 'dart:async';
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
abstract class ConnectivityService {
void subscribeToConnectivityChange({
required Function() onInternetDisConnected,
required Function() onInternetConnected,
});
Future<String> getCurrentScreenIP();
}
class ConnectivityServiceImp implements ConnectivityService {
Connectivity connectivityInstance;
ConnectivityServiceImp({required this.connectivityInstance});
@override
subscribeToConnectivityChange({
required Function() onInternetDisConnected,
required Function() onInternetConnected,
}) {
connectivityInstance.onConnectivityChanged.listen((List<ConnectivityResult> event) async {
switch (event.first) {
case ConnectivityResult.wifi:
case ConnectivityResult.ethernet:
onInternetConnected();
break;
case ConnectivityResult.none:
onInternetDisConnected();
break;
case ConnectivityResult.mobile:
case ConnectivityResult.bluetooth:
case ConnectivityResult.vpn:
case ConnectivityResult.other:
break;
}
});
}
@override
Future<String> getCurrentScreenIP() async {
const eth = "eth0";
const wlan = "wlan0";
String currentDeviceIp = "";
final ips = await NetworkInterface.list(type: InternetAddressType.IPv4);
for (var interface in ips) {
if (interface.name == eth) {
for (var address in interface.addresses) {
currentDeviceIp = address.address;
}
}
if (interface.name == wlan) {
for (var address in interface.addresses) {
currentDeviceIp = address.address;
}
}
}
return currentDeviceIp;
}
}