Flutter: получение локального IP-адреса на Android

#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';