【问题标题】:How to traverse through the following loop in dart?如何遍历飞镖中的以下循环?
【发布时间】:2020-01-01 11:29:03
【问题描述】:
 {"products": [
    {
        "prod_id": "prod-345",
        "name": "Something",
        "category": "Cloth",
        "thumbnail": "",
        "rating": 1,
    },
    {
        "prod_id": "prod-123",
        "name": "Something Else",
        "category": "Watch",
        "thumbnail": "",
        "rating": 1,
    },
 ]}

我想使用 for each 遍历列表,但无法这样做。请帮忙。

【问题讨论】:

    标签: android ios flutter mobile dart


    【解决方案1】:

    使用以下

    ProductReply data = productReplyFromJson(jsonString);
    for(int i=0;i<data.products.length;i++){
    print(data.products[i]. name);
    }
    

    定义保存数据的类

    // To parse this JSON data, do
    //
    //     final productReply = productReplyFromJson(jsonString);
    
    import 'dart:convert';
    
    ProductReply productReplyFromJson(String str) => ProductReply.fromJson(json.decode(str));
    
    String productReplyToJson(ProductReply data) => json.encode(data.toJson());
    
    class ProductReply {
        List<Product> products;
    
        ProductReply({
            this.products,
        });
    
        factory ProductReply.fromJson(Map<String, dynamic> json) => ProductReply(
            products: List<Product>.from(json["products"].map((x) => Product.fromJson(x))),
        );
    
        Map<String, dynamic> toJson() => {
            "products": List<dynamic>.from(products.map((x) => x.toJson())),
        };
    }
    
    class Product {
        String prodId;
        String name;
        String category;
        String thumbnail;
        int rating;
    
        Product({
            this.prodId,
            this.name,
            this.category,
            this.thumbnail,
            this.rating,
        });
    
        factory Product.fromJson(Map<String, dynamic> json) => Product(
            prodId: json["prod_id"],
            name: json["name"],
            category: json["category"],
            thumbnail: json["thumbnail"],
            rating: json["rating"],
        );
    
        Map<String, dynamic> toJson() => {
            "prod_id": prodId,
            "name": name,
            "category": category,
            "thumbnail": thumbnail,
            "rating": rating,
        };
    }
    

    【讨论】:

      【解决方案2】:
      List<Map> products = [];
      
       @override
        void initState(){
          super.initState();
          Map tmp = {"products": [
          {
              "prod_id": "prod-345",
              "name": "Something",
              "category": "Cloth",
              "thumbnail": "",
              "rating": 1,
          },
          {
              "prod_id": "prod-123",
              "name": "Something Else",
              "category": "Watch",
              "thumbnail": "",
              "rating": 1,
          },
       ]};
          products.addAll(tmp['products']);
        }
      
      
      @override
        Widget build(BuildContext context) {
          return Scaffold(
            appBar: AppBar(
              title: const Text('Let\'s parse some JSON'),
            ),
            body: Container(
            padding:EdgeInsets.fromLTRB(5,10,5,10),
            child:ListView.builder(
            itemCount:products.length,
            itemBuilder:(cc,ind){
              return ListTile(
              title:Text(products[ind]['name'])
              );
            }
            )
            )
          );
        }
      

      【讨论】:

        猜你喜欢
        • 2022-06-28
        • 1970-01-01
        • 2016-11-27
        • 2021-12-18
        • 1970-01-01
        • 2021-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多