【发布时间】:2019-04-02 18:37:52
【问题描述】:
我使用listView Builder从Future<List<Category>>构建类别的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;
}
【问题讨论】: