Dart面试题更新 2026-08-05

在 Flutter 开发中,列表渲染通常通过哪些组件完成?请说明 ListView 与 GridView 在布局方向、滚动行为和适用场景上的主要差异。

技术原理技术选型Flutter

考察说明

考查 Flutter 列表类组件的掌握程度,以及对比二者差异时的准确性。

回答思路

  1. 【回答框架 1】Flutter 中列表渲染主要依靠可滚动组件,如 ListView、GridView、CustomScrollView。ListView 用于线性列表,支持垂直或水平滚动,通过 builder 构造可惰性加载子项。
  2. 【回答框架 2】GridView 用于网格布局,按行或列排布子项,需指定 crossAxisCount 或 SliverGridDelegate 实现比例和间距控制。
  3. 【回答框架 3】两者都支持懒加载,但 ListView 适合一维数据流,GridView 适合二维矩阵展示。ScrollView 的通用属性如滚动方向、控制器可通过 axis 和 physics 统一配置。
  4. 【回答框架 4】在构建大数据量列表时,两者都应使用 itemBuilder 或 builder 模式,避免一次性创建所有子项导致性能下降。
  5. 【回答框架 5】选择依据是内容形态:若数据有固定间隔或需要分类排列,ListView 更直观;若需显示卡片矩阵或图片网格,GridView 更合适。
  6. 【关键点 1】ListView 适用于线性单列或多列(通过 scrollDirection 设定横向)列表,GridView 用于多行多列网格。
  7. 【关键点 2】两者均可基于视口懒加载,builder 构造函数性能优于直接传入 children。
  8. 【关键点 3】GridView 通过 gridDelegate 控制子项宽高比和间距,ListView 无需此配置。
  9. 【关键点 4】滚动监听、控制器、加载更多逻辑在两者中一致,可复用 ScrollController。
  10. 【关键点 5】实际项目中,高度不固定的列表优先考虑 ListView,固定行列网格则选 GridView。
  11. 【易错点 1】不区分场景盲目使用 GridView 处理长列表可能导致内存占用过高,需确认 item 数量。
  12. 【易错点 2】在 ListView 中嵌套 GridView 或反向嵌套时,应设置 shrinkWrap 或固定高度以避免滚动冲突。
  13. 【易错点 3】使用 builder 时必须注意 itemCount 与实际数据长度一致,否则出现空白或崩溃。