如何从Flutter中的JSON实例获取价值?

Arnav Varyani:

我当前的JSON文件采用以下格式:

    {
   "feed":{
      "entry":[
         {
            "id":{
               "$t":"somedata"
            },
            "title":{
               "type":"text",
               "$t":"Stack Smash"
            },
            "content":{
               "type":"text",
               "$t":"somedata"
            },
},
         {
                  "id":{
               "$t":"somedata"
            },
            "title":{
               "type":"text",
               "$t":"Stack Smash"
            },
            "content":{
               "type":"text",
               "$t":"somedata"
            },
         }
      ]
   }
}

我需要解析json['feed']['entry']和内的内容(idtitlecontent)。

这是我当前的实现:

 Future<List<Feed>> getData() async {
    List<Feed> list;
    String link = '$url';
    var res = await http.get(link);
    if (res.statusCode == 200) {
      var data = json.decode(res.body);
      var rest = data["feed"]["entry"] as List;
      list = rest.map<Feed>((json) => Feed.fromJson(json)).toList();
    }
    return list; 
  }
}

class Feed {
  ImageJSON image;

  Feed({this.image});

  factory Feed.fromJson(Map<String, dynamic> json) {
    return Feed(
        image: ImageJSON.fromJson(json["title"]));
  }
}

class ImageJSON {
  String image;

  ImageJSON({this.image});

  factory ImageJSON.fromJson(Map<String, dynamic> json) {
    return ImageJSON(
      image: json["\$t"] as String,
    );
  }
}

 @override
   Widget build(BuildContext context) {
    return Scaffold(
    appBar: gameAppBar(),
    body: FutureBuilder(
    future: getData(),
    builder: (context, snapshot) {
    return snapshot.data != null
       ? CustomScrollView(slivers: <Widget>[
        SliverPadding(
       padding: const EdgeInsets.only(
        top: 20.0, left: 8, right: 8),
         sliver: gamesGrid(snapshot.data)) ])
   : Container(child: Text(snapshot.error));
            }));
  }

  Widget gamesGrid(List<Feed> feed) {
    return SliverPadding(
      padding: const EdgeInsets.only(left: 8, right: 8),
      sliver: SliverGrid(
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 3,
            crossAxisSpacing: 10,
            mainAxisSpacing: 10,
            childAspectRatio: 2 / 2.9),
        delegate: SliverChildBuilderDelegate(
          (BuildContext context, int i) {
            return Column(
              children: [
                   GridTile(
                    child: Image.network(
                      '${feed[i].image}',
                      fit: BoxFit.cover,
                    ),
                  ),
              ],
            );
          },
          childCount: 100,
        ),
      ),
    );
  }

该代码打印Instance of ImageJSON,如何让我的String距离ImageJSON

Haroon Ashraf Cloud:
GridTile(
                    child: Image.network(
                      '${feed[i].image.image}',
                      fit: BoxFit.cover,
                    ),
                  ),

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章