postFormMultiAsync<T> method
Implementation
Future<MappedNetworkServiceResponse<T>?> postFormMultiAsync<T>(
String path, dynamic data) async {
var content = json.encoder.convert(data);
final Map<String, dynamic> rawMap = jsonDecode(content);
rawMap.removeWhere((k, v) {
return rawMap[k] == null;
});
final Map<String, String> reqMap = {};
for (var ak in rawMap.keys) {
reqMap[ak] = rawMap[ak].toString();
}
var request = http.MultipartRequest("POST", Uri.parse(path));
request.fields.addAll(reqMap);
request.fields['token'] = MxBaseUserInfo.instance.getToken()!;
var resp;
await request.send().then((response) async {
if (!((response.statusCode < 200) || (response.statusCode >= 300))) {
String jsonResult = '';
await response.stream.toStringStream().listen((json) {
jsonResult = json;
});
Map? resultClass = jsonDecode(jsonResult);
resp = MappedNetworkServiceResponse<T>(
mappedResult: resultClass,
networkServiceResponse: NetworkServiceResponse<T>(success: true));
} else {
var jsonResult = response.stream.toString();
dynamic resultClass = {"succeed": false};
resp = MappedNetworkServiceResponse<T>(
mappedResult: resultClass,
networkServiceResponse: NetworkServiceResponse<T>(success: false));
}
});
return resp;
}