我正在使用flutter构建一个应用程序。我想在gridview中显示gridview,我想要一个数据列表视图。我有一个JSON Api,响应是这样的。
它是一个对象的数组。我想在该gridview中的listview中的gridview和services属性中显示对象的title和price属性。我正在使用Futurebuilder
。我很困惑在Futurebuilder里面我应该使用gridview.count
还是gridviewbuilder
。为了实现listview,我应该在ListViewbuilder
或gridviewbuilder
下使用gridview.count
吗?有任何其他想法来实现这一目标
"title": "EXPRESS 2",
"price": 500,
"services": [
{
"_id": "5ca07706e8f4c521f0010567",
"serviceId": "5c9081e3ae535e0c549fa0fe",
"name": "DENT SECTION"
},
{
"_id": "5ca07706e8f4c521f0010566",
"serviceId": "5c90820aae535e0c549fa100",
"name": "ELECTRICAL SYSTEM"
}
],
"id": "5ca07706e8f4c521f0010565"
},```
GridView.count
:创建一个可滚动的2D小部件数组,在横轴上有固定数量的切片
和
GridView.builder
:创建按需创建的可滚动的2D小部件数组。
So use the GridView.builder
并尝试此代码绑定您的数据
GridView.builder(
shrinkWrap: true,
itemCount: itemDataList.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2,childAspectRatio: 0.6),
itemBuilder: (BuildContext context, int index){
return Card(
elevation: 6.0,
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Center(
child: Text(itemDataList[index].title),
),
displayItem("id ", itemDataList[index].id),
displayItem("price ", itemDataList[index].price.toString()),
ListView.builder
(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: itemDataList[index].services.length,
itemBuilder: (BuildContext ctxt, int indx) {
return new Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Divider(
height: 2,
color: Colors.black,
),
displayItem("_Id", itemDataList[index].services[indx].sId),
displayItem("Service Id", itemDataList[index].services[indx].serviceId),
displayItem("Service name", itemDataList[index].services[indx].name),
],
);
}
),
],
),
);
},
),
)
Widget displayItem(String key, String value){
return Padding(
padding: const EdgeInsets.all(2.0),
child: Text('$key : $value', style: TextStyle(fontSize: 11),),
);
}