#flutter #dart #network-programming #ip-address
#flutter #dart #сетевое программирование #ip-адрес
Вопрос:
Как мне получить локальный IP-адрес моего устройства (Android) в Flutter? Это должно быть
- локальный IP-адрес, который я получаю через DHCP от моего маршрутизатора при подключении к WIFI
- локальный IP-адрес в сети VPN, назначенный моим VPN-сервером (не глобальный IP-адрес самим VPN-сервером), если подключен к VPN
- глобальный IP-адрес при подключении через сотовую
Комментарии:
1.взгляните на эти плагины: pub.dev/пакеты / подключение pub.flutter-io.cn/packages/get_ip
Ответ №1:
На данный момент я решил это так, но если у вас есть решение получше, это было бы полезно:
static Future<String> getLocalIpAddress() async {
final interfaces = await NetworkInterface.list(type: InternetAddressType.IPv4, includeLinkLocal: true);
try {
// Try VPN connection first
NetworkInterface vpnInterface = interfaces.firstWhere((element) => element.name == "tun0");
return vpnInterface.addresses.first.address;
} on StateError {
// Try wlan connection next
try {
NetworkInterface interface = interfaces.firstWhere((element) => element.name == "wlan0");
return interface.addresses.first.address;
} catch (ex) {
// Try any other connection next
try {
NetworkInterface interface = interfaces.firstWhere((element) => !(element.name == "tun0" || element.name == "wlan0"));
return interface.addresses.first.address;
} catch (ex) {
return null;
}
}
}
}
Комментарии:
1. Нужен:
import 'dart:io';