Как установить метод flutter POST с помощью DIO?

Это мой код ниже, я застрял, пожалуйста, помогите. Как установить метод flutter POST с помощью DIO?

Map<String, dynamic> toJson() {
    return {
        'id': id,
         "name": name,
         "telNumber": telNumber,
         "email": email,
         "age": age
      };
   }

String postToJson(Post data){
      final dyn = data.toJson();
      return json.encode(dyn);
}

Future<http.Response> createPost(Post post) async {
          final response = await http.post(
               "$baseUrl/users",
              headers: {
                  "content-type": "application"
                    },
              body: postToJson(post));
              return response;
            }

Этот метод работает в http

3 ответа

 BaseOptions options = new BaseOptions(
     baseUrl: $baseUrl,
     connectTimeout: 10000,
     receiveTimeout: 10000,);
final dioClient = Dio(options);
try{
   final response = await dioClient.post("/users", data: FormData.fromMap(
      postToJson(post))
    ),);
   return response;
} catch (e) {
  throw (e);
}

Поместите этот код в функцию

Экземпляр Dio предоставляет метод POST, где мы можем передать параметр в формате JOSN

Выполнение запроса POST:

      Dio dio = Dio();

void postHTTP(String url, Map data) async {
  try {
    Response response = await dio.post(url, data: data);
    // Do whatever
  } on DioError catch (e) {
    // Do whatever
  }
}

Чтобы отправить данные формы, мы можем использовать экземпляр FormData и передать значения сопоставления ключей и указать, куда вы хотите отправить данные.

Большинство приложений нужно отправить files/images к серверу как multipart/form-data и этого очень легко достичь с помощью Dio, поскольку в пакете Dio доступны все классы и методы.

Отправка FormData:

      // Single File with Additional Data
FormData formData = FormData.fromMap({
  "name": "Ryan Dsilva",
  "age": 21,
  "file": await MultipartFile.fromFile("PATH", filename:"OPTIONAL"),
});

// Multiple Files with Additional Data
FormData formData = FormData.fromMap({
  "name": "Ryan Dsilva",
  "age": 21,
  "files": [
    await MultipartFile.fromFile("PATH", filename:"OPTIONAL"),
    MultipartFile.fromFileSync("PATH", filename:"OPTIONAL")
  ],
}); 

var response = await dio.post('/info', data: formData);

Вы можете создать новую функцию и вызвать ее откуда угодно:

Future<Null> SendPost() async {

    Response response;
    BaseOptions options = new BaseOptions(
      baseUrl: "https://your.url",
      connectTimeout: 6000,
      receiveTimeout: 3000,
    );
    Dio dio = new Dio(options);

    FormData formData = new FormData.fromMap({
      "post_data1": value,
      "post_data2": value,
    });

    try {
      response=await  dio.post("/page.php", data: formData);
      return response;
    } catch (e) {
      print('Error: $e');
    }
  }
Другие вопросы по тегам