postData<T> function

Future<T> postData<T>({
  1. required String endpoint,
  2. required Map<String, dynamic> body,
  3. T fromJson(
    1. dynamic json
    )?,
})

Generic POST request

Implementation

Future<T> postData<T>({
  required String endpoint,
  required Map<String, dynamic> body,
  T Function(dynamic json)? fromJson,
}) async {
  if (_baseUrl.isEmpty) {
    throw Exception("Base URL is not set. Call setBaseUrl() first.");
  }

  final response = await http.post(
    Uri.parse("$_baseUrl/$endpoint"),
    headers: _buildHeaders(),
    body: jsonEncode(body),
  );

  if (response.statusCode == 200 || response.statusCode == 201) {
    final json = jsonDecode(response.body);
    return fromJson != null ? fromJson(json) : json;
  } else {
    throw Exception("POST $endpoint failed: ${response.statusCode}");
  }
}