当前位置: 首页 > news >正文

flutter长列表 ListView、GridView、SingleChildScrollView、CustomScrollView区别

组件名称用途/适合场景是否懒加载支持列表结构用法复杂度
SingleChildScrollView适用于内容数量不大、不重复的页面(如表单、静态内容)❌ 否❌ 否⭐⭐
ListView适用于垂直方向的长列表,自动滚动;适合展示大量数据✅ 支持✅ 是⭐⭐
ListView.builder优化版 ListView,适合超长动态列表,按需懒加载构建✅ 强烈推荐✅ 是⭐⭐⭐
GridView适用于网格状布局,如图片列表✅ 支持✅ 是(网格)⭐⭐⭐
CustomScrollView高级滚动视图,组合多个滚动子元素(如 SliverAppBar + SliverList)✅ 支持✅ 是(灵活⭐⭐⭐⭐
PageView水平翻页,用于页面轮播、引导页、Tab 内容切换等✅ 每页懒加载❌ 否⭐⭐
Scrollable(低阶)最底层滚动组件,通常不建议直接使用,除非自定义滚动行为❓ 取决于实现⭐⭐⭐⭐⭐

常见使用场景说明

  1. SingleChildScrollView
    适合非列表型的页面,比如表单、图文页面。
SingleChildScrollView(child: Column(children: [...],),
)
  • 不支持懒加载
  • 所有子项一次性渲染
  • 不建议用于长列表,性能差
  1. ListView / ListView.builder
    适合列表型页面(如聊天记录、新闻列表、商品列表等)
ListView(children: [Text('Item 1'),Text('Item 2'),],
)// 更推荐
ListView.builder(itemCount: 1000,itemBuilder: (context, index) => Text('Item $index'),
)
  • 支持滚动
  • 支持懒加载(builder 模式)
  • 更适合长内容
  1. GridView
    用于网格状内容(如相册、九宫格)
GridView.count(crossAxisCount: 2,children: [...],
)
  • 有滚动能力
  • 可用于横向或纵向
  • 可指定网格数量、间距
  1. CustomScrollView + Slivers
    用于构建更复杂滚动效果,比如顶部可折叠 AppBar + 列表内容
CustomScrollView(slivers: [SliverAppBar(expandedHeight: 200,flexibleSpace: FlexibleSpaceBar(title: Text('标题')),pinned: true,),SliverList(delegate: SliverChildBuilderDelegate((context, index) => ListTile(title: Text('Item $index')),childCount: 50,),),],
)
  • 高度可定制,滚动联动效果
  • 用于复杂的 UI 页面(如首页、动态页)
  1. PageView
PageView(children: [Container(color: Colors.red),Container(color: Colors.green),],
)
  • 适用于引导页、卡片轮播、Tab 页
  • 支持左右/上下滑动
  • 支持手势控制、自动翻页

总结建议

页面类型推荐滚动组件
表单、静态信息页面SingleChildScrollView
聊天、列表、动态加载页面ListView.builder
图片网格、宫格商品GridView
首页、复杂滑动结构页面CustomScrollView
引导页、卡片轮播PageView
http://www.xdnf.cn/news/502003.html

相关文章:

  • 专题四:综合练习(组合问题的决策树与回溯算法)
  • 嘉立创EDA成图:文件管理
  • 【前端基础】11、CSS的属性特性(继承、层叠、元素类型、隐藏元素的四种方式)
  • 【笔记】正弦交流电路的特征量
  • MMDetection环境安装配置
  • 小蜗牛拨号助手用户使用手册
  • STM32中的DMA
  • Python自学笔记3 常见运算符
  • Redis 事务与管道:原理、区别与应用实践
  • 【JDBC】JDBC概述、历史版本及特征
  • 深入解析 React 的 useEffect:从入门到实战
  • (头歌作业)—6.1 葡萄酒评论分析报告(project)
  • DeepSeek超大模型的高效训练策略
  • 数据结构与算法——双向链表
  • 探秘 Java 字节缓冲流:解锁高效 IO 操作的进阶之路
  • Unity 人物模型学习笔记
  • MATLAB2025新功能
  • 开源项目实战学习之YOLO11:12.3 ultralytics-models-sam-encoders.py源码分析
  • gcc/g++常用参数
  • Go 语言的 GMP 模型
  • DeepSeek 赋能量子计算:突破与未来图景
  • Python时间处理全攻略:标准库与第三方库的实战应用
  • 如何 naive UI n-data-table 改变行移动光标背景色
  • Linux——shell编程
  • 线对板连接器的兼容性问题:为何老旧设计难以满足现代需求?
  • 前端-HTML元素
  • 匿名函数与闭包(Anonymous Functions and Closures)-《Go语言实战指南》原创
  • Java IO流进阶实战详解(含文件读写、拷贝、加密、字符集)
  • 【springcloud学习(dalston.sr1)】Config配置中心-ConfigServer端与Git通信(含源代码)(十三)
  • 5月17日