千家信息网

Flutter的SingleChildScrollView怎么使用

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,今天小编给大家分享一下Flutter的SingleChildScrollView怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅
千家信息网最后更新 2025年02月01日Flutter的SingleChildScrollView怎么使用

今天小编给大家分享一下Flutter的SingleChildScrollView怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

SingleChildScrollView

SingleChildScrollView类似于Android中的ScrollView,它只能接收一个子组件。定义如下:

const SingleChildScrollView({    Key key,    this.scrollDirection = Axis.vertical,    // 是否按照阅读方向相反的方向滑动,如:scrollDirection值为Axis.horizontal,如果阅读方向是从左到右(取决于语言环境,阿拉伯语就是从右到左)。    // reverse为true时,那么滑动方向就是从右往左。其实此属性本质上是决定可滚动组件的初始滚动位置是在"头"还是"尾",取false时,初始滚动位置在"头",反之则在"尾"。    this.reverse = false,    this.padding,    // 指是否使用widget树中默认的PrimaryScrollController;当滑动方向为垂直方向(scrollDirection值为Axis.vertical)并且没有指定controller时,primary默认为true.    bool primary,    this.physics,    this.controller,    this.child,    this.dragStartBehavior = DragStartBehavior.start,  }) : assert(scrollDirection != null),       assert(dragStartBehavior != null),       assert(!(controller != null && primary == true),          'Primary ScrollViews obtain their ScrollController via inheritance from a PrimaryScrollController widget.'          'You cannot both set primary to true and pass an explicit controller.'       ),       primary = primary ?? controller == null && identical(scrollDirection, Axis.vertical),       super(key: key);

除了在简介我们介绍过的可滚动组件的通用属性外,我们重点看一下reverse和primary两个属性:

  • reverse:该属性API文档解释是:是否按照阅读方向相反的方向滑动,如:scrollDirection值为Axis.horizontal,如果阅读方向是从左到右(取决于语言环境,阿拉伯语就是从右到左)。reverse为true时,那么滑动方向就是从右往左。其实此属性本质上是决定可滚动组件的初始滚动位置是在"头"还是"尾",取false时,初始滚动位置在"头",反之则在"尾",可以自己试验。

  • primary:指是否使用widget树中默认的PrimaryScrollController;当滑动方向为垂直方向(scrollDirection值为Axis.vertical)并且没有指定controller时,primary默认为true

需要注意的是,通常SingleChildScrollView只应在期望的内容不会超过屏幕太多时使用,这是因为SingleChildScrollView不支持基于Sliver的延迟实例化模型,所以如果预计视口可能包含超出屏幕尺寸太多的内容时,那么使用SingleChildScrollView将会非常昂贵(性能差),此时应该使用一些支持Sliver延迟加载的可滚动组件,如ListView。

示例:

下面是一个将大写字母A-Z沿垂直方向显示的例子,由于垂直方向空间会超过屏幕视口高度,所以我们使用SingleChildScrollView:

class SingleChildScrollViewTestRoute extends StatelessWidget {  @override  Widget build(BuildContext context) {    String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";    return Scrollbar( // 显示进度条      child: SingleChildScrollView(        padding: EdgeInsets.all(16.0),        child: Center(          child: Column(             //动态创建一个List              children: str.split("")                 //每一个字母都用一个Text显示,字体为原来的两倍                .map((c) => Text(c, textScaleFactor: 2.0,))                 .toList(),          ),        ),      ),    );  }}

运行效果如图:

以上就是"Flutter的SingleChildScrollView怎么使用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

方向 属性 组件 位置 内容 知识 篇文章 屏幕 取决于 字母 是在 本质 环境 语言 还是 阿拉 视口 阿拉伯语 延迟 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何连接数据库服务器2008 义乌云象网络技术有限公司 反诈小故事网络安全在行动 科技公司有网络安全吗 网络技术计算机三级知识点第三章 DBS表示的是数据库系统 服务器cpu金牌与银牌 solr搜索服务器 通用的数据库管理工具 江西生鲜软件开发 网络安全法第二十四 软件开发项目投资测算表 服务器数据库的备份与恢复 举例说明网络技术的应用具体实例 node部署到服务器 数据库是怎么冷却的 北京普元信息技术软件开发面试 公安局 网络安全 招聘 营销网络技术有限公司招聘 在关系数据库中关系就是一张 软件开发专业都要学什么专业 Access中创建表或数据库 数据库建构 徐州机械软件开发售后保障 浅谈大学生网络安全问题论文 注册功能连接数据库 电力应急软件开发以客为尊 零基础学软件开发好学吗 怎么搭建代理ip服务器 sql服务器和数据库用户区别
0