You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中FutureBuilder循环异常仅返回首个匹配Card、i++未执行问题

问题根因

你在for循环内部匹配到符合条件的项后直接执行了return操作,该操作会直接终止整个builder函数的执行,循环自然不会继续执行后续的i++逻辑,因此只能返回第一个匹配的Card组件。

修复方案

先遍历所有数据收集全部符合条件的Card组件,再将组件列表放在可滚动容器中统一返回,修改后的参考代码如下:

return FutureBuilder<BerichtList>(
  future: futureBerichte,
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      // 先收集所有符合条件的Card
      List<Widget> matchCards = [];
      for (var i = 0; i < snapshot.data.berichte.length; i++) {
        if (snapshot.data.berichte[i].team == team) {
          print(i);
          matchCards.add(
            Container(
              width: double.infinity,
              margin: EdgeInsets.all(15.0),
              child: Card(
                shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(15.0)),
                elevation: 5,
                color: Colors.white,
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  mainAxisSize: MainAxisSize.min, // 让Column自适应内容高度
                  children: <Widget>[
                    Container(
                      margin: EdgeInsets.symmetric(vertical: 15),
                      child: Text(
                        DateFormat("dd.MM.yyyy HH:mm").format(
                            DateTime.parse(
                                snapshot.data.berichte[i].spielDatum)),
                        style: TextStyles.body,
                      ),
                    ),
                    Container(
                      child: Text(
                        snapshot.data.berichte[i].spiele,
                        style: TextStyles.body,
                      ),
                    ),
                    Container(
                      margin: EdgeInsets.only(bottom: 15),
                      child: Text(
                        snapshot.data.berichte[i].ergebnis,
                        style: TextStyles.body,
                      ),
                    ),
                    Container(
                      margin: EdgeInsets.only(bottom: 15),
                      child: Text(
                        snapshot.data.berichte[i].ueberschrift,
                        style: TextStyles.headline4,
                      ),
                    ),
                    Container(
                      margin: EdgeInsets.only(bottom: 30),
                      child: Text(
                        snapshot.data.berichte[i].bericht,
                        style: TextStyles.body,
                      ),
                    ),
                  ],
                ),
              ),
            ),
          );
        }
      }
      // 所有符合条件的卡片收集完成后统一返回
      if(matchCards.isNotEmpty){
        return ListView(
          children: matchCards,
        );
      }else{
        return Container();
      }
    } else {
      return Center(child: AppProgressIndicator());
    }
  }
);

如果你不需要滚动效果,只需要把所有卡片放在同一页展示,可以将返回的ListView替换为SingleChildScrollView(child: Column(children: matchCards))即可。

内容的提问来源于stack exchange,提问作者mame

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:30:01