【发布时间】:2021-08-24 10:44:17
【问题描述】:
我想使用 api 检索到的列表中的信息生成网格视图
如何做到这一点?
似乎GridView.builder 方法是为了允许这样做,但该方法似乎没有任何解释
【问题讨论】:
标签: flutter gridview dynamic flutter-layout
我想使用 api 检索到的列表中的信息生成网格视图
如何做到这一点?
似乎GridView.builder 方法是为了允许这样做,但该方法似乎没有任何解释
【问题讨论】:
标签: flutter gridview dynamic flutter-layout
例子:
List<Widget> cardsList = [];
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
title: Text('Team Kitty'),
),
body: GridView.builder(
itemCount: cardsList.length,
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
//crossAxisCount: (orientation == Orientation.portrait) ? 2 : 3),
itemBuilder: (BuildContext context, int index) {
return Container(child: cardsList[index]);
}),
floatingActionButton: new FloatingActionButton(
onPressed: addCard(),
tooltip: 'Add Card',
child: new Icon(Icons.add),
),
);
}
}
希望有所帮助!
【讨论】:
GridView.count() 示例
FutureBuilder<List<dynamic>>(
future: callApi(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
return
(snapshot.data.length == 0) ? Container(
alignment: Alignment.center,
child: Text('No data'),
) :
GridView.count(
controller: _scrollController,
crossAxisCount: 2,
padding: EdgeInsets.all(20.0),
crossAxisSpacing: 30.0,
mainAxisSpacing: 23.0,
childAspectRatio: 8.0 / 9.0,
children: itemsList
.map(
(Item) =>
cardView(Item),
).toList(),
);
} else if (snapshot.hasError) {
print("Error : " + snapshot.error.toString());
return Container(
alignment: Alignment.center,
child: Text('No data'),
);
} else {
print('no data');
}
// While the data is being loaded, show a spinner
return
Container(
child: SpinKitChasingDots(
color: primaryRed,
),
);
},
)
【讨论】: