#listview #dart #flutter
#listview #dart #флаттер
Вопрос:
Я использую ListView Builder для построения списка категорий из Future<List<Category>>
, после отладки моего кода все в порядке, за исключением того, что 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;
}
Ответ №1:
Если вы новичок в работе с API в Flutter, будет полезно прочитать об этом, вы можете взглянуть на это, написанное Пуджей, и удивительный пост о том, что именно вы делаете, работая с FutureBuilder.
Надеюсь, это поможет.