Как использовать вложенные циклы для извлечения данных из API остальных в флаттере? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть экран заказов, где отображаются размещенные заказы и позиции, размещенные для каждого заказа.Я использовал цикл for для извлечения заказов из API, но в ответе json order он также имеет параметр items, внутри которого есть несколько элементов.Я не могу понять, как поместить еще один цикл в коде для получения списка элементов.Поэтому, пожалуйста, помогите мне с этим ... Спасибо ..

мой ответ json

    [
    {
    "id": 1453,
    "total": "407.00",
    "line_items": [
        {
            "id": 34,
            "name": "Aloo Chaat Salad",
            "product_id": 931,
            "quantity": 1,
            "total": "90.00",
        },
        {
            "id": 35,
            "name": "Aloo Jeera",
            "product_id": 1020,
            "quantity": 1,
            "total": "140.00",
        },
        {
            "id": 36,
            "name": "Banana Shake",
            "product_id": 963,
            "quantity": 1,
            "tax_class": "",
            "total": "140.00",
        }
    ],
  }
] 

myModel.dart

class OrderListModel {
final int id;
final String total;

 Map line_items = {};

  OrderListModel(this.id, this.total, this.line_items);

 }

мой код для извлечения данных

 List<OrderListModel> myAllDatas = [];

Future getDatas() async {
String basicAuth = 'Basic ' +
    base64.encode(
        utf8.encode('${GlobalVar.consumerKey}:${GlobalVar.secretKey}'));

var response = await http
    .get("${GlobalVar.url}wp-json/wc/v2/orders?customer=6", headers: {
  'Authorization': basicAuth,
  'Accept': 'application/json',
});
if (response.statusCode == 200) {
  String responseBody = response.body;
  var jsonBody = json.decode(responseBody);
  for (var data in jsonBody) // loop for fetching the orders
  {
    myAllDatas.add(new OrderListModel(data['id'], data['total'], 
data['line_items'])); // how to place a loop so that i can fetch the items 
inside the line_items parameter too?
  }
  setState(() {});
} else {
  print(response.statusCode);
  print(response.body);
}
}

когда я выбираю элементы line_items, я просто хочу получить их имена и разделить их запятыми подряд.

1 Ответ

0 голосов
/ 04 февраля 2019

Используйте для такой петли -

for (var data in body) {
    List items = data["line_items"];
    for (int i = 0; i < items.length; i++) {
      int id = items[i]["id"];
      String name = items[i]["name"];
    }
  }
...