Respon static method
Implementation
static Future<Map<String, dynamic>> Respon({
required String urlHttp,
required Map<String, dynamic> dataMap,
bool isEncoded = false,
bool isGet = false,
Map<String, String> headers = const {'content-type': 'application/json'},
}) async {
String body = "";
Map<String, String> emptyStatus = {"status": ""};
try {
bool result = await InternetConnectionChecker().hasConnection;
if (!result) return emptyStatus;
YurLog(name: urlHttp, dataMap);
final url = Uri.parse(urlHttp);
const timeout = 30;
onTimeout() => http.Response('', 500);
if (isGet) {
final response = await http
.get(url, headers: headers)
.timeout(timeout.seconds, onTimeout: onTimeout);
body = response.body;
var decoded = json.decode(utf8.decoder.convert(response.bodyBytes));
return decoded;
}
if (isEncoded) {
var responEncode = await http
.post(url, headers: headers, body: jsonEncode(dataMap))
.timeout(timeout.seconds, onTimeout: onTimeout);
body = responEncode.body;
var decoded = await json.decode(body);
return decoded;
}
final serverRequest = http.MultipartRequest('POST', url);
serverRequest.fields
..addAll(dataMap.cast<String, String>())
..addAll(headers);
final response = await serverRequest
.send()
.timeout(timeout.seconds, onTimeout: serverRequest.send);
body = await response.stream.bytesToString();
bool empty = body.isEmpty || body == "[]" || body.contains("No data");
if (empty) return emptyStatus;
return await json.decode(body);
} catch (e) {
YurLog(name: urlHttp, "Error: $e | $body");
return emptyStatus;
}
}