return Scaffold(
body: SingleChildScrollView(
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Column(
children: <Widget>[
NewsBlock(
size: size,
dataList: dataList,
imgNum: 1,
titleNum: 11,
urlNum: 21,
),
NewsBlock(
size: size,
dataList: dataList,
imgNum: 2,
titleNum: 12,
urlNum: 22,
),
NewsBlock(
size: size,
dataList: dataList,
imgNum: 3,
titleNum: 13,
),
NewsBlock(
size: size,
dataList: dataList,
imgNum: 4,
titleNum: 14,
),
],
)
],
),
],
)),
);
我想用for循环来简化长代码。 但是我不知道如何在颤动中使用循环。 我认为可以通过将i放入imgNum,titleNum和urlNum并增加i来减少代码的长度。 我怎样才能做到这一点? (顺便说一句,有10个新闻块,但我还没有为所有新闻块写urlNum,因为键入所有新闻块让我觉得自己很傻)
答案 0 :(得分:1)
您可以像这样使用for循环:
final maxSize = ???;
final imgStartIndex = 1;
final titleStartIndex = 11;
final urlStartIndex = 21;
return Scaffold(
body: SingleChildScrollView(
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Column(
children: <Widget>[
for (int i = 0; i < maxSize; i++)
NewsBlock(
size: size,
dataList: dataList,
imgNum: imgStartIndex + i,
titleNum: titleStartIndex + i,
urlNum: urlStartIndex + i,
),
],
)
],
),
],
)),
);
我不知道您的数据结构,因此您应该猜测一下如何计算 maxSize ;
答案 1 :(得分:1)
对于您的问题,您可以这样做
children: [
for (var i = 0; i < List.length; i++)
NewsBlock()
],
其他方法是在列表数据中使用地图
children: newsData.map((item)=>NewsBlock(
size: item.size,
dataList: item.datalist,
imgNum: item.imgNum,
titleNum: item.titleNum,
)).toList()