getUserIPAddress method
Returns a validated public IPv4 or IPv6 address.
Providers are tried in order. Returns null if they all fail, time out,
or return invalid data.
Implementation
Future<String?> getUserIPAddress() async {
for (final Uri provider in _ipProviders) {
try {
final Object? data = await _request(provider);
final String? candidate =
_asMap(data)?['ip']?.toString().trim() ?? data?.toString().trim();
if (candidate != null && _isValidIp(candidate)) {
return candidate;
}
} on Object {
// A failed provider is expected; continue with the next fallback.
}
}
return null;
}