如何在颤振中使用for循环?

时间:2020-11-08 11:04:36

标签: android ios flutter dart

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,因为键入所有新闻块让我觉得自己很傻)

2 个答案:

答案 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()