Создание категории и подкатегории с вложенным json в flutter

#json #flutter #dart

#json #flutter #dart

Вопрос:

Я пытаюсь создать приложение flutter, которое показывает категорию и элементы на основе выбранной категории. здесь я могу получить категорию, но попал в выборку элементов, может кто-нибудь, пожалуйста, помочь мне решить эту проблему .. вот мой код

 class ListElement {
  ListElement({
    this.catId,
    this.categoryName,
    this.item,
  });

  String catId;
  String categoryName;
  List<Item> item;

  factory ListElement.fromJson(Map<String, dynamic> json) => ListElement(
        catId: json["cat_id"],
        categoryName: json["category_name"],
        item: List<Item>.from(json["item"].map((x) => Item.fromJson(x))),
      );
}

class Item {
  Item({
    this.itemId,
    this.itemName,
  });

  String itemId;
  String itemName;

  factory Item.fromJson(Map<String, dynamic> json) => Item(
        itemId: json["item_id"],
        itemName: json["item_name"],
      );

}
  

вот код для извлечения категории

 Future<List<ListElement>> showCatagory() async {
    try {
      final response = await http.get(url);
      if (response.statusCode == 200) {
        var category = jsonDecode(response.body);
        List data = category['details']['list'];
        return data.map((e) => ListElement.fromJson(e)).toList();
      } else {
        return List<ListElement>();
      }
    } catch (e) {
      return List<ListElement>();
    }
  }


FutureBuilder(
      future: showCatagory(),
      builder: (context, snapshot) {
        }
    );
  

вот вложенный json:

 list: [
    {
      cat_id: "517",
      category_name: "Pizza",
      item: [
        {
         itemId: '1',
         itemName: 'name'
        },
        {
         itemId: '2',
         itemName: 'name'
        },
      ],
    },
    {
    //other items
    }
   ]
  

введите описание изображения здесь
любая помощь, по крайней мере, для получения списка продуктов, будет высоко оценена.

Комментарии:

1. Вы получаете какие-либо ошибки с вашей текущей реализацией?

2. Нет, я могу получить все категории, перечисленные в пользовательском интерфейсе, но не уверен, как заставить элементы отображаться в базе пользовательского интерфейса для этой категории (прилагается рисунок), есть какие-либо предложения?

3. Элементы списка = List(); Результат сопоставления = jsonDecode(json); результат [«список»].forEach((категория)=> категория [«элементы»].forEach((it)=>items.add(it))); items.forEach((item)=>print(«${item[«ItemName»]}»));

Ответ №1:

Я публикую здесь код для доступа к элементам:

 List items = List(); 
Map result = jsonDecode(json); 

result["list"].forEach(
(category)=> category["items"].forEach(
(it)=> items.add(it)
)
); 

items.forEach((item)=>print("${item["itemName"]}"));