determineAddress function
origin: simlpu_mob/lib/globals.dart (determineAddress) union-of: jogjaprov_pamor_mob_masyarakat/lib/globals.dart (getFormattedAddress) author: anovsiradj, opencode-go/glm-5.2 version: 2022-05-31, revised: 2026-08-17
Reverse-geocode via Google Maps /geocode/json. API key from env GOOGLE_MAPS_API_KEY.
If lat/lng null, falls back to determinePosition.
Returns first result's Map on 200, else the raw response Map. null on error.
Implementation
Future<Map<String, dynamic>?> determineAddress([double? lat, double? lng, String locale = 'id_ID']) async {
if (lat == null || lng == null) {
final pos = await determinePosition();
lat = pos.latitude;
lng = pos.longitude;
}
final apiKey = dotenv.env['GOOGLE_MAPS_API_KEY'] ?? '';
final uri = Uri.parse('https://maps.google.com/maps/api/geocode/json').replace(queryParameters: {
'key': apiKey,
'latlng': '$lat,$lng',
'language': locale,
});
try {
final res = await http.get(uri).timeout(const Duration(seconds: 10));
final tmp = jsonDecode(res.body);
if (res.statusCode == 200) {
return Map<String, dynamic>.from(tmp['results'][0]);
}
return Map<String, dynamic>.from(tmp);
} catch (e) {
return null;
}
}