Метод post пакета http пакета Dart принимает в качестве тела запроса только String, List или Map. Мне нужно отправить этот список как тело
List item = widget.product
.map((prod) => {
"product_id": prod.id,
"product_name": prod.title,
"product_quantity": prod.quantity,
"product_reference": prod.reference
}).toList();
В Postman я бы построил тело как сырое json
{"id_customer": "null",
"id_adresse": "null",
"id_carrier": "155",
"secure_key": "null",
"payment": "Paiement à la livraison",
"total_paid": "311.0",
"total_product": "298.0",
"total_shipping": "7.0",
"tax": "0.6",
"products": [{"product_id": "5444",
"product_name": "Batterie adaptable pour ordinateur portable Asus X550A 2200mAh",
"product_quantity": "1",
"product_reference": "null"},
{"product_id": "5433",
"product_name": "Batterie originale pour ordinateur portable Asus K52 4400mAh",
"product_quantity": "1",
"product_reference": "null"}]}
, и это моя попытка
void addorders(String id , String id_adresse,String secure_key,String id_carrier,String paiement,double total,double total_product,double total_shipping,double tax, List products) async {
final prefs = await SharedPreferences.getInstance();
final key = 'token';
final value = prefs.get(key ) ?? 0;
String myUrl = "$serverUrl/orders";
final String prod=products.toString();
http.post(myUrl,
headers: {
'Accept':'application/json',
//"content-type": "application/json",
'Authorization' : 'JWT $value'
},
body: {
"id_customer":"$id",
"id_adresse":"$id_adresse",
"id_carrier":"$id_carrier",
"secure_key":"$secure_key",
"payment":"$paiement",
"total_paid":"$total",
"total_product":"$total_product",
"total_shipping":"$total_shipping",
"tax":"$tax",
"products":"$prod",
}).then((response){
// print('Response status : ${response.statusCode}');
print('Response body ');
print(response.request);
// print('Response body : ${id_carrier}');
}
);
}
Я использую String encoded = json .encode (theMap), но та же проблема, что мой api не читает список продуктов. Помогите, пожалуйста.