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);
【Flutter滚动组件之SingleChildScrollView使用详解】除了在简介我们介绍过的可滚动组件的通用属性外,我们重点看一下reverse和primary两个属性:
- reverse:该属性API文档解释是:是否按照阅读方向相反的方向滑动,如:scrollDirection值为Axis.horizontal,如果阅读方向是从左到右(取决于语言环境,阿拉伯语就是从右到左)。reverse为true时,那么滑动方向就是从右往左。其实此属性本质上是决定可滚动组件的初始滚动位置是在“头”还是“尾”,取false时,初始滚动位置在“头”,反之则在“尾”,可以自己试验。
- primary:指是否使用widget树中默认的PrimaryScrollController;当滑动方向为垂直方向(scrollDirection值为Axis.vertical)并且没有指定controller时,primary默认为true
示例:
下面是一个将大写字母A-Z沿垂直方向显示的例子,由于垂直方向空间会超过屏幕视口高度,所以我们使用SingleChildScrollView:
class SingleChildScrollViewTestRoute extends StatelessWidget {@overrideWidget build(BuildContext context) {String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; return Scrollbar( // 显示进度条child: SingleChildScrollView(padding: EdgeInsets.all(16.0),child: Center(child: Column( //动态创建一个Listchildren: str.split("") //每一个字母都用一个Text显示,字体为原来的两倍.map((c) => Text(c, textScaleFactor: 2.0,)) .toList(),),),),); }}
运行效果如图:
文章图片
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 通过vue3学习react17(二)|通过vue3学习react17(二) - 父组件调用子组件方法Ref(ts)
- Vue中父子组件通信与事件触发的深入讲解
- 简述Angular组件间传值
- Yank Note 系列 04 - 编辑和预览同步滚动方案
- k8s原来这么简单(一)核心组件与工作原理
- 炫酷组件模板+便捷操作,V10.5版本让自助仪表盘制作更美更易用!
- 【dubbo3.x|【dubbo3.x trace组件分享】
- nf-Press|nf-Press —— 在线文档也可以加载组件和编写代码
- 使用react做一个页面滚动的效果
- Vue加载中动画组件使用方法详解