post method

Future<Map<String, dynamic>> post({
  1. required String url,
  2. Map<String, dynamic>? parameters,
  3. Map<String, dynamic>? body,
})

Implementation

Future<Map<String, dynamic>> post({
  required String url,
  Map<String, dynamic>? parameters,
  Map<String, dynamic>? body,
}) async {
  try {
    await _checkInternet();

    log('===================================================');
    String param = _makeParameter(parameters);
    log('url: $url$param');
    log('body: ${jsonEncode(body)}');
    Uri uri = Uri.parse('$url$param');
    var response = await http.post(
      uri,
      body: jsonEncode(body),
      headers: _makeHeader(),
    );

    if (response.statusCode == 200) {
      log('response(${response.statusCode}: ${response.body}');
      log('===================================================');

      Map<String, dynamic> jsonResponse = json.decode(response.body);
      // _checkAfterResponse(jsonResponse);

      return jsonResponse;
    }
    throw NetworkException(
      message: 'Something went wrong',
      code: response.statusCode,
    );
  } on NetworkException catch (e) {
    log('Network exception(${e.code}): ${e.message}');
    log('===================================================');
    // _checkAfterResponse({'status': e.code});
    rethrow;
  } on InternetException catch (e) {
    log('Internet exception: ${e.message}');
    log('===================================================');
    rethrow;
  } catch (e) {
    log('error (${e.runtimeType}: ${e.toString()}');
    log('===================================================');
    rethrow;
  }
}