使用json向类添加值并在flutter中创建一个listview

时间:2018-08-30 20:12:37

标签: dart flutter

我知道我在这里遗漏了一些非常基本的东西,但是我试图使用一些json来创建一系列的卡片。我对编码非常陌生,还不了解类构造函数的创建以及json在其上的应用。我可以收到响应,并通过打印到控制台可以看到我可以解析json,但是将其作为文本显示在卡上是我遇到问题的地方。在将json应用于类时,我们将获得任何帮助,我计划使用列表视图填充卡片详细信息。

这是api调用和小部件构建的代码:

import 'package:flutter/material.dart';

import './views.dart';

import 'package:http/http.dart' as http;

import 'dart:convert';

class BodyText extends StatelessWidget {
  final List<ViewObject> fetcheddata = [];

  @override
  Widget build(BuildContext context) {
    testapi();
    return ListView.builder(
      itemCount: fetcheddata.length,
      itemBuilder: cardBuilder,
    );
  }

  Widget cardBuilder(BuildContext context, int index) {
    return Card(
      child: Text(thisobject.brandname), etc etc
    );
  }

  void testapi() async {
    http
        .get('urlgoeshere')
        .then((http.Response response) {
      final Map<String, dynamic> viewslistdata = json.decode(response.body);
      viewslistdata.forEach((String view, dynamic viewdata) {
        ViewObject thisobject = ViewObject(
            brandName: viewdata['brandname'],
            appName: viewdata['appname'],
            views: viewdata['Views']);
        fetcheddata.add(thisobject);

      });
    });
  }
}

这是类的构造函数

import 'package:flutter/material.dart';

class ViewObject {
  final String appName;
  final String brandName;
  final int views;

  ViewObject(
      {@required this.appName , @required this.brandName, @required this.views});    
  }

您可以告诉我,我是编码的新手,尤其是飞镖/颤振,对于不好的代码,我深表歉意。我已经找到了答案,但找不到任何可以完全帮助的东西。

1 个答案:

答案 0 :(得分:0)

您需要将StatelessWidget转换为StatefulWidget,然后在setState上致电fetcheddata.add(thisobject)

setState((){
fetcheddata.add(thisobject);
})