#flutter #dart
#flutter #dart
Вопрос:
Я хочу отправить этот файл JSON в API —
{
"speciality": [7,2]
}
Мои разработки:
class Doctor {
dynamic specialities;
Doctor({
this.specialities,
});
Map<String,dynamic>toJson()=>{
"speciality": List<dynamic>.from(specialities.map((x) => x)),
};
}
Поэтому, когда я использовал http.patch, он работал нормально (код ниже). Мой вопрос в том, как сделать то же самое, используя пакет Dio, потому что я работаю с многочастным файлом.
response = await http.patch(
Uri.encodeFull(fullUrl),
body: jsonEncode(doctor.toJson()),//jsonEncode(data),
headers: {
'Content-type' : 'application/json',
'Accept' : 'application/json',
'Authorization' : 'Token $token',
},
);
Я попытался использовать код Dio (ниже), я не получил ошибки в консоли, но исправление не выполняется успешно.
updateDoctorInformation(Doctor doctor,token) async{
Dio dio = new Dio();
var formData = FormData();
formData = FormData.fromMap(doctor.toJson());
Response response = await dio.patch(
Uri.encodeFull(fullUrl),
data: formData,
options: Options(
followRedirects: false,
validateStatus: (status) {
return status < 500;
},
headers: {
'Content-type' : 'multipart/form-data',
'Accept' : '*/*',
'Authorization' : 'Token $token',
},
)).catchError((onError){
print(onError.toString());
}).whenComplete(() => print("completed"));
print(response.data);
return response;
}
Мне нужно исправление кода Dio. Заранее спасибо.
Ответ №1:
Я нашел способ добавлять отдельно.
if(doctor.specialities !=null){
for(int i=0;i<doctor.specialities.length;i ){
formData.fields.add(
MapEntry("speciality",doctor.specialities[i].toString())
);
}
}
Тем не менее, я ищу лучшее решение, например, используя toJSON выше