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

如何在Flutter的CustomScrollView中使用带无限滚动的FirestoreListView?

解决FirestoreListView嵌入CustomScrollView的问题

直接使用FirestoreListView无法适配CustomScrollView的原因是它属于普通滚动组件(继承自ListView),自带滚动逻辑,和CustomScrollView的sliver滚动体系冲突。正确的做法是使用firebase_ui_firestore提供的**FirestoreSliverListView**——这是专门为sliver滚动场景设计的组件。

具体实现代码

CustomScrollView(
  slivers: [
    // 这里可以添加你需要的顶部组件,比如SliverAppBar或其他sliver组件
    SliverAppBar(
      title: const Text('房源列表'),
      floating: true,
    ),
    // 用FirestoreSliverListView替代原来的FirestoreListView
    FirestoreSliverListView(
      key: UniqueKey(),
      pageSize: 10,
      loadingBuilder: (context) => const Loading(),
      query: FirebaseFirestore.instance
          .collection('houses')
          .orderBy('datecreation', descending: true),
      itemBuilder: (context, snapshot) {
        return MyTile(
          myHouse: House(id: snapshot.id),
        );
      },
    ),
  ],
)

关键说明

  • FirestoreSliverListView的API和FirestoreListView几乎完全一致,只是它是sliver类型,可以直接放入CustomScrollView的slivers数组中。
  • 顶部需要添加的非sliver组件,可以用SliverToBoxAdapter包裹后放入slivers数组,比如:
    SliverToBoxAdapter(
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Text('这是顶部的自定义组件'),
      ),
    ),
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:35:57