Flutter: Get local IP address on Android
1,990
I solved it like this for now, but if you have a better solution, that would be deligthful:
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;
}
}
}
}
Author by
Julian Aßmann
Updated on December 23, 2022Comments
-
Julian Aßmann over 1 year
How do I get the local IP address of my (Android) device in Flutter? This should be
- the local IP address I get assigned via DHCP by my router when connected to WIFI
- the local IP address in the VPN network assigned by my VPN server (not the global IP address by the VPN server itself) if connected to VPN
- the global IP when connected via cellular