颤振中的动态 GridView 列表 UI
Dynamic GridView List UI in flutter
我的设计是这样的:
我一直在阅读有关 GridView
的文章,发现它很复杂,足以得出结果。我在这里也关注了这个问题:。发现这是针对固定列表的,再加上列表有不同UI。
我有来自 API 的信息,我有一个名为 MoreInfo()
的小部件,它有一个要从 API 传递的文本参数。
我已经实现了我想要从列表中获取字符串的目的。只是我试图得到结果但没有很好地给出结果。
将列表添加到小部件:
GridView getOtherInfo(BuildContext context){
List<String> _yesElems = [];
List<Widget> _widget = [];
this.userBarModel.barModel.otherInfo.yes.forEach((item){
_yesElems.add(item);
});
_yesElems.forEach((o){
_widget.add(MoreInfoWidget(text: o));
});
return GridView.count(
crossAxisCount: 4,
children: _widget
);
}
UI代码:
Column(
corssAxisalignment: CrossAxisAlignment.stretch;
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 9.0),
child: Text("MORE INFO",
style: TextStyle(color: Color.fromRGBO(183, 193, 203, 1), fontWeight: FontWeight.bold, fontSize: 11.0))
),
SizedBox(height: 11.4),
Container(
height: 140,
child: getOtherInfo(context)
)
]
)
我现在得到的结果是:
我想得到上述结果。 UI 添加了内置的顶部填充。我不知道为什么。伙计们,你能帮帮我吗?
我试过使用 crossAixCount: 2
,UI 变成空白。任何帮助,将不胜感激。谢谢:)
也许我没听懂,你能试试这个代码,它给了你如何按照你的方式做的提示,如果这就是你要找的,请告诉我。
List<int> _list = [];
math.Random random = math.Random();
@override
void initState() {
super.initState();
Timer.periodic(Duration(milliseconds: 1000), (timer) {
_list.add(random.nextInt(100));
setState(() {});
});
}
Widget build(context) {
return Scaffold(
appBar: AppBar(),
body: GridView.count(
crossAxisCount: 2,
crossAxisSpacing: 160,
childAspectRatio: 3,
children: _list.map((value) {
return Container(
alignment: Alignment.center,
margin: EdgeInsets.all(8),
decoration: BoxDecoration(border: Border.all(color: Colors.black),),
child: Text("Item ${value}"),
);
}).toList(),
),
);
}
我的设计是这样的:
我一直在阅读有关 GridView
的文章,发现它很复杂,足以得出结果。我在这里也关注了这个问题:
我有来自 API 的信息,我有一个名为 MoreInfo()
的小部件,它有一个要从 API 传递的文本参数。
我已经实现了我想要从列表中获取字符串的目的。只是我试图得到结果但没有很好地给出结果。
将列表添加到小部件:
GridView getOtherInfo(BuildContext context){
List<String> _yesElems = [];
List<Widget> _widget = [];
this.userBarModel.barModel.otherInfo.yes.forEach((item){
_yesElems.add(item);
});
_yesElems.forEach((o){
_widget.add(MoreInfoWidget(text: o));
});
return GridView.count(
crossAxisCount: 4,
children: _widget
);
}
UI代码:
Column(
corssAxisalignment: CrossAxisAlignment.stretch;
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 9.0),
child: Text("MORE INFO",
style: TextStyle(color: Color.fromRGBO(183, 193, 203, 1), fontWeight: FontWeight.bold, fontSize: 11.0))
),
SizedBox(height: 11.4),
Container(
height: 140,
child: getOtherInfo(context)
)
]
)
我现在得到的结果是:
我想得到上述结果。 UI 添加了内置的顶部填充。我不知道为什么。伙计们,你能帮帮我吗?
我试过使用 crossAixCount: 2
,UI 变成空白。任何帮助,将不胜感激。谢谢:)
也许我没听懂,你能试试这个代码,它给了你如何按照你的方式做的提示,如果这就是你要找的,请告诉我。
List<int> _list = [];
math.Random random = math.Random();
@override
void initState() {
super.initState();
Timer.periodic(Duration(milliseconds: 1000), (timer) {
_list.add(random.nextInt(100));
setState(() {});
});
}
Widget build(context) {
return Scaffold(
appBar: AppBar(),
body: GridView.count(
crossAxisCount: 2,
crossAxisSpacing: 160,
childAspectRatio: 3,
children: _list.map((value) {
return Container(
alignment: Alignment.center,
margin: EdgeInsets.all(8),
decoration: BoxDecoration(border: Border.all(color: Colors.black),),
child: Text("Item ${value}"),
);
}).toList(),
),
);
}