import 'package:http/http.dart' as http; /// Platform-neutral HTTP client wrapping the internal API base URL. /// Base URL is read from the FLUTTER_API_URL_INTERNAL environment variable /// (set by Docker) or falls back to localhost for local development. class ApiClient { final String baseUrl; final http.Client _client; ApiClient({http.Client? client}) : baseUrl = const String.fromEnvironment( 'API_BASE_URL', defaultValue: 'http://localhost:8080', ), _client = client ?? http.Client(); Map _headers({String? token}) => { 'Content-Type': 'application/json', if (token != null) 'Authorization': 'Bearer $token', }; Future get(String path, {String? token}) => _client.get(Uri.parse('$baseUrl$path'), headers: _headers(token: token)); Future post(String path, String body, {String? token}) => _client.post(Uri.parse('$baseUrl$path'), headers: _headers(token: token), body: body); Future put(String path, String body, {String? token}) => _client.put(Uri.parse('$baseUrl$path'), headers: _headers(token: token), body: body); Future delete(String path, {String? token}) => _client.delete(Uri.parse('$baseUrl$path'), headers: _headers(token: token)); }