postWithURLEncodedNew method

Future<APIResponse> postWithURLEncodedNew({
  1. required String url,
  2. Map<String, dynamic>? body,
  3. Map<String, String>? headers,
})

Implementation

Future<APIResponse<dynamic>> postWithURLEncodedNew({
  required String url,
  Map<String, dynamic>? body,
  Map<String, String>? headers,
}) async {
  String tokenString =
      await storageManger.getStorePreferences(type: token) ?? "";
  String language = storageManger.getStorage(type: apiLanguage) ?? "";
  if (tokenString.isNotEmpty) {
    headers?["Authorization"] = "Bearer $tokenString";
  }
  if (language.isNotEmpty) {
    body?["lang"] = language;
  }
  var uri = Uri.parse(url);
  var client = http.Client();
  var result = await client.post(uri, body: body, headers: headers);
  if (result.statusCode == 500) {
    String message = 'Internal Server Error';
    if (result.body is Map) {
      message = json.encode(result.body);
    }
    return APIResponse<dynamic>(code: "500", message: message);
  }
  if (result.statusCode == 401) {
    return APIResponse<dynamic>(
        code: "401", message: 'Your token has expired!');
  }
  var jsonBody = jsonDecode(utf8.decode(result.bodyBytes)) as Map;
  var code = jsonBody['code'];
  var message = jsonBody['message'];
  var jsonData = jsonBody['data'];
  if (code != null) {
    return APIResponse<dynamic>(
        value: jsonData, code: code, message: message);
  } else {
    return APIResponse<String>(value: null, code: code, message: message);
  }
}