Здравствуйте, мне было трудно решить следующую проблему. Я хотел бы показывать только примечания к заказу из woocommmerce со значением «customer_note»: true, см. запрос Json вниз
{
"id": 281,
"author": "system",
"date_created": "2017-03-21T16:46:41",
"date_created_gmt": "2017-03-21T19:46:41",
"note": "Order ok!!!",
"customer_note": false,
}
Вот как данные из примечаний к заказу хранятся в моем флаттер-коде.
@override
Future<List<OrderNote>> getOrderNote(
{String? userId, String? orderId}) async {
try {
var response = await wcApi
.getAsync('orders/$orderId/notes?customer=$userId&per_page=20');
var list = <OrderNote>[];
if (response is Map && isNotBlank(response['message'])) {
throw Exception(response['message']);
} else {
for (var item in response) {
// if (item.type == 'customer') {
/// it is possible to update to `any` note
/// ref: https://woocommerce.github.io/woocommerce-rest-api-docs/#list-all-order-notes
list.add(OrderNote.fromJson(item));
// }
}
return list;
}
} catch (e) {
rethrow;
}
}
Как насчет добавления условия внутри цикла for для проверки значения customer_note
в элементе, чтобы решить, добавлять ли его в список или нет, как показано ниже:
for (var item in response) {
if (item['customer_note'])
{
// customer_note == true
list.add(OrderNote.fromJson(item));
}
}
Пожалуйста, но вы можете удалить строку customer_note == true;
, это был просто комментарий к коду, фактическое условие — это то, что находится внутри if
. Буду признателен, если вы примете ответ, потому что он решил проблему.
I Также отфильтруйте примечание к заказу, содержащее определенное слово, со следующим
if (item['note'].contains('État'))
{
list.add(OrderNote.fromJson(item));
}
Спасибо @Moazel-sawaf Сработало
if (item['customer_note']){'customer_note' == true;list.add(OrderNote.fromJson(item));}