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

Flutter:页面滚动

1、单一页面,没有列表没分页的,推荐使用:SingleChildScrollView()

return Scaffold(backgroundColor: Color(0xffF6F6F6),body: SingleChildScrollView(child: _buildView())
);

2、列表没分页,如购物车页,每个item之间带分隔距离的滚动列表使用:ListView.separated()

Widget _buildView() {// 在分隔列表return ListView.separated(// 每一个item项itemBuilder: (BuildContext context,int index){return Text('测试一下$index');},// 定义每个item之间的分隔距离separatorBuilder: (BuildContext context,int index){return SizedBox(height: 10.w,);},// 一共有多少条记录itemCount: 50,);
}

在这里插入图片描述

Flutter中,页面滚动的组件主要包括 ListViewGridViewSingleChildScrollViewCustomScrollView 等。这些组件各有特点,适用于不同的场景。以下是对这些滚动组件的详细介绍及适用情况:ListView:
特点:用于在一个可滚动的列表中显示一系列的子控件。
适用情况:当需要展示大量列表项时,ListView 是一个很好的选择。特别是 ListView.builder 构造函数,它可以根据需要动态地创建和渲染列表项,从而节省内存和提高性能。GridView:
特点:将子控件排列成网格布局,并允许用户滚动浏览。
适用情况:当需要展示大量以网格形式排列的内容时,如图片库或商品列表,可以使用 GridView。同样,GridView.builder 构造函数可以优化性能,避免一次性创建所有子控件。SingleChildScrollView:
特点:只能包含单个子控件,并允许该子控件在垂直或水平方向上滚动。
适用情况:当页面内容较为简单,且不需要复杂的滚动布局时,可以使用 SingleChildScrollView。然而,如果预计视口可能包含超出屏幕尺寸太多的内容,使用 SingleChildScrollView 可能会导致性能问题,因为它不支持基于 Sliver 的延迟实例化模式。CustomScrollView:
特点:自定义滚动模型的可滚动视图,可以同时包含多种滚动模型,如 ListViewGridViewSliverAppBar 等。
适用情况:当需要构建复杂的滚动布局时,如包含可伸缩头部、悬浮导航栏等,CustomScrollView 是一个强大的工具。它允许将不同的滚动组件组合在一起,实现丰富的交互效果。
此外,Flutter 还提供了基于 Sliver 的滚动组件,如 SliverListSliverGridSliverAppBar 等。这些组件通常用于 CustomScrollView 中,以实现更高级别的滚动效果和性能优化。SliverList:用于创建垂直方向的可滚动列表,与 ListView 类似,但性能更优,因为它支持基于 Sliver 的延迟实例化模式。SliverGrid:用于创建网格布局的可滚动列表,与 GridView 类似,但同样支持基于 Sliver 的性能优化。SliverAppBar:用于创建可伸缩的头部,可以随着滚动改变高度、显示/隐藏标题等,通常与 CustomScrollView 一起使用。综上所述,在选择 Flutter 中的滚动组件时,应根据具体需求和应用场景进行选择。如果页面内容简单且不需要复杂布局,可以使用 SingleChildScrollView。
如果需要展示大量列表项或网格内容,可以使用 ListViewGridView,并考虑使用它们的 .builder 构造函数来优化性能。
如果需要构建复杂的滚动布局,则可以使用 CustomScrollView,并结合使用基于 Sliver 的滚动组件来实现更高级别的滚动效果和性能优化。

http://www.mrgr.cn/news/78902.html

相关文章:

  • [VUE]框架网页开发02-如何打包Vue.js框架网页并在服务器中通过Tomcat启动
  • 解决 Flutter Dio合并请求多个接口,如果一个接口500,那么导致其他请求不在执行
  • unity与android拓展
  • 消息队列-kafka
  • 基于 SpringBoot 的在线家具商城:设计特色与实现优势
  • DOCKER学习总结
  • SCAU期末笔记 - 数据库系统概念
  • 洛谷二分题
  • 鸿蒙技术分享:Navigation页面管理-鸿蒙@fw/router框架源码解析(二)
  • OpenCV_Code_LOG
  • 从0学习JavaScript(2)
  • 【大数据技术基础 | 实验十四】Kafka实验:订阅推送示例
  • Android:生成Excel表格并保存到本地
  • 书生浦语·第四期作业合集
  • 【小白学机器学习41】如何从正态分布的总体中去抽样?比较不同的取样方差的差别
  • 3分钟快速掌握——c语言【流程控制】if else选择语句,for while循环,goto语句
  • java基础概念46-数据结构1
  • Linux命令进阶·如何切换root以及回退、sudo命令、用户/用户组管理,getent命令以及解决创建用户不显示问题和Ubuntu不显示用户名只显示“$“符号问题
  • 爬虫专栏第二篇:Requests 库实战:从基础 GET 到 POST 登录全攻略
  • 长安汽车嵌入式面试题及参考答案
  • 开源鸿蒙system ability manager关键属性解析
  • 爬虫专栏第一篇:深入探索爬虫世界:基础原理、类型特点与规范要点全解析
  • linux网络抓包工具
  • PyQt6思维导图和实例(登录帝国时代)
  • Linux 35.6 + JetPack v5.1.4@DeepStream安装
  • echarts的双X轴,父级居中的相关配置