post method

Future<Map<String, dynamic>> post(
  1. String path, {
  2. QueryOption? option,
  3. Map<String, dynamic>? include = const {},
  4. Map<String, dynamic>? query = const {},
  5. dynamic waitRef = true,
  6. dynamic access = true,
  7. dynamic refresh = false,
})

Implementation

Future<Map<String,dynamic>> post(String path,{QueryOption? option,Map<String,dynamic>? include=const{},Map<String,dynamic>? query=const{},waitRef=true,access=true,refresh=false}) async {
  option = option ?? QueryOption();
  return _executeRequest(() async {
    var op = await _beforeQuery(option,path:path,include:include,query:query,waitRef:waitRef,access:access,refresh:refresh);
    http.Response response;
    if(option?.file == true){
      final request = await _convertToMultipart('POST',op['url'],option?.data as Map<String,dynamic>,op['headers']);
      final streamed = await request.send().timeout(option?.timeout ?? timeout);
      response = await http.Response.fromStream(streamed);
    }else{
      final headers = Map<String,String>.from(op['headers']);
      headers['Content-Type'] = 'application/json; charset=UTF-8';
      response = await http.post(op['url'],body:option?.data!=null?jsonEncode(option?.data):null,headers:headers).timeout(option?.timeout ?? timeout);
    }
    var data = await _resHandler(response,fn:(){return post(path,option:option,include:include,query:query,waitRef:waitRef,access:access,refresh:refresh);},refresh:refresh);
    if(data is Map && data['body'] != null){ return data as dynamic; }
    return {'body':data,'status':response.statusCode,'headers':response.headers};
  });
}