getJson method
- String endpoint
Performs a GET request and returns the parsed JSON response.
Implementation
Future<Map<String, dynamic>> getJson(String endpoint) async {
try {
// Check if endpoint already has query parameters.
final separator = endpoint.contains('?') ? '&' : '?';
final url = '$baseUrl/$endpoint${separator}api_key=$apiKey';
final response = await _client.get(Uri.parse(url)).timeout(_timeout);
if (response.statusCode == 200) {
return json.decode(response.body) as Map<String, dynamic>;
} else {
throw NetworkException(
'Failed to load data from $endpoint',
statusCode: response.statusCode,
);
}
} on http.ClientException catch (e) {
throw NetworkException('Network error: ${e.message}');
} on FormatException catch (e) {
throw NetworkException('Invalid response format: ${e.message}');
} on Exception catch (e) {
throw NetworkException('Unexpected error: ${e.toString()}');
}
}