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

Flutter问题:滚动陷入异常循环

问题:ListView条目删除后滚动陷入异常循环

我的页面包含一个ListView,每个列表项均由StreamBuilder包裹,用于检测该条目是否已被删除:若条目已删除则显示SizedBox,否则显示正常列表项。但当条目被删除后,尝试滚动列表时会停在同一位置,陷入异常循环。该问题在iPhone真机的TestFlight版本及App Store版本中均会出现,暂未在Android设备上测试。

相关代码如下:

ListView.builder(
  // primary: false,
  shrinkWrap: true,
  itemCount: upcomingEventsList?.length,
  keyboardDismissBehavior:
      ScrollViewKeyboardDismissBehavior.onDrag,
  itemBuilder: (context, listViewIndex) {
    var listViewEventsRecord =
        upcomingEventsList![listViewIndex];
    return StreamBuilder<DocumentSnapshot>(
        key: ValueKey(listViewEventsRecord.reference.id),
        stream: firestore
            .doc(listViewEventsRecord.reference.path)
            .snapshots(),
        builder: (context, snapshot) {
          if (snapshot.hasData && (!snapshot.data!.exists))
            return SizedBox.shrink();
          listViewEventsRecord = snapshot.hasData
              ? EventsRecord.fromSnapshot(snapshot.data!)
              : listViewEventsRecord;

          return FFAppState().isGridView
                  ? EventListBiggerWidget(
                      key: Key(
                        'Keygib_${listViewEventsRecord.reference.id}',
                      ),
                      event: listViewEventsRecord,
                    )
                  : Padding(
                      padding: const EdgeInsets.fromLTRB(
                          8, 0, 8, 0),
                      child: EventSmallListPublicWidget(
                        key: Key(
                          'Keylwy_${listViewEventsRecord.reference.id}',
                        ),
                        event: listViewEventsRecord,
                      ),
                    );
        });
  },
),

目前已录制问题演示视频,并在GitHub提交了该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:07:32