簡體   English   中英

如何在顫振中使用 for 循環?

[英]How can I use for loop in flutter?

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 循環將長代碼縮短。 但是我不知道如何在flutter中使用for循環..我認為我可以通過將i放入imgNum,titleNum和urlNum並增加i來減少代碼長度。 我怎樣才能做到這一點? (順便說一句,有 10 個新聞塊,我還沒有為所有新聞塊寫 urlNum,因為輸入所有新聞塊讓我覺得自己像個傻瓜)

您可以像這樣使用 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

對於你的問題,你可以這樣做

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM