itemBuilder函数不执行

问题描述 投票:0回答:1

我使用listView Builder来构建来自Future的类别的ListView,在调试我的代码之后所有事情都没事,除了itemBuilder函数没有执行,当我调试itemCount:snapshot.data.length执行但itemBuilder没有执行时,这里是我的代码:

var categoryIcon = Container(
      color: Colors.white,
      padding: EdgeInsets.only(top: 20.0),
      alignment: AlignmentDirectional.centerStart,
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          Padding(
            padding: EdgeInsets.only(left: 20.0, top: 0.0),
            child: Text(
              "Categories ",
              style: TextStyle(
                  fontSize: 13.5,
                  fontFamily: "Sans",
                  fontWeight: FontWeight.w700),
            ),
          ),
          FutureBuilder(
            future: getCategories(),
            builder: (BuildContext context, AsyncSnapshot snapshot){

              if(snapshot.data == null){
                return Container(

                );
              }
              else{
                return ListView.builder(
                    itemBuilder: (BuildContext context, int index){
                      return new Container(
                          child: new Text(snapshot.data[index].name)););
                    },
                    itemCount : snapshot.data.length
                );
              }
            }
          ),
          /// Get class CategoryIconValue
          Padding(padding: EdgeInsets.only(bottom: 30.0))
        ],
      ),
    );

这是我解析Json的函数:

  Future<List<Category>> getCategories() async{
    var data = await http.get("http://192.168.0.134:9091/Categorie");
    var extractData = json.decode(data.body);
    List<Category> listCat = [];
    for(var c in extractData){
      Category cat = new Category(c["id"],c["name"]);
      listCat.add(cat);
    }
    print(listCat.length);
    return listCat;
  } 
listview dart flutter
1个回答
0
投票

如果你是在Flutter中使用API​​的新手,你会很好地阅读它,你可以看看Pooja编写的this以及与FutureBuilder一起工作的精彩文章。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.