首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Flutter | 滚动组件,ListView,GridVIew等

physics:此属性接受一个 ScrollPhysics 类型对象,他觉得可滚动组件如何响应用户的操作,比如用户滑动完抬起手指,继续执行动画;或者滑动到边界之后如何显示。...在 ListView 中指定 itemExtent 比让子组件自己决定吱声的长度会更有效,因为指定滚动系统可以提前知道列表的长度,而无需每次构建子组件是都去计算一下,尤其是在滚动位置频繁变化时(滚动系统需要频繁去计算列表的高度...当 ListView 在一个无边界(滚动向上)的容器中时, shrinkWrap 必须为 true addAutomaticKeepAlives:该属性表示是否将列表项(子组件) 包裹在 AutomaticKeepAlive...,是由于还有一些如 SliverPadding,SliverAppBar 等是和可滚动组件无关的,他们主要是为了配合 CustomScrollView 一起使用,这是因为 CustomScrollView...:SliverAppBar 对应 AppBar,两者不同之处在于 SliverAppBar 可以集成到 CustomScrollView 中,SliverAppBar 可以结合 FlexibleSpaceBar

8.4K20

UITableView在Flutter中是什么?

不过,这种创建方式要求提前将所有子Widget一次性创建好,而不是等到他们真正在屏幕上显示的时候才会创建,所以有一个很明显的缺点,就是性能不好。因此,这种方式仅适用于列表中含有少量元素的场景。...flexibleSpace 可以让背景图显示在SliverAppBar下方,高度和SliverAppBar一样; 而在创建SliverList时,通过 SliverChildBuilderDelegate...具体的示例代码如下所示: CustomScrollView( slivers: [ SliverAppBar(//SliverAppBar 作为头图控件...如下代码所示,我们声明了一个有着100个元素的列表项,当滚动视图到特定位置,用户可以点击按钮返回到列表顶部: 首先,我们在State的初始化方法里,创建了ScrollController,并通过_controller.addListener...Text("Index : $index")),// 列表项创建方法 ), ) ) ); } 相比于ScrollController只能和具体的ListView关联才可以监听到滚动信息

5.5K10

Flutter 粘合剂CustomScrollView控件

CustomScrollView CustomScrollView是使用Sliver组件创建自定义滚动效果的滚动组件,使用场景: ListView和GridView相互嵌套场景,ListView嵌套GridView...Sliver系列组件有很多,比如SliverList、SliverGrid、SliverFixedExtentList、SliverPadding、SliverAppBar等。...,AppBar具有吸顶效果,此效果也是我们经常遇到的,用法如下: CustomScrollView( slivers: [ SliverAppBar( pinned...reverse参数表示反转滚动方向,并不是垂直转为水平,而是垂直方向滚动时,默认向下滚动,reverse设置false,滚动方向改为向上,同理水平滚动改为水平向左。...controller为滚动控制器,可以监听滚到的位置,设置滚动的位置等,用法如下: _scrollController = ScrollController(); //监听滚动位置 _scrollController.addListener

1.9K20

Flutter入门指北(Part 8)之Sliver 组件及NestedScrollView

如果设置了 snap 属性,滑动距离达到一定值,会根据滑动方向收缩或者展开 ? 如果设置了 pinned 属性,那么 AppBar 就会在界面上不会消失 ?...SliverPersistentHeader Flutter 中,为我们提供了这么一个作为头部的部件 SliverPersistentHeader,这个部件可以根据滚动的距离缩小高度,有点类似 SliverAppBar...糟透了的翻译 X 1:一个内部能够嵌套其他滚动部件,并使其滚动位置联结到一起的滚动部件 /// The most common use case for this widget is a scrollable...的 forceElevated 属性,当内部内容滚动时,显示 SliverAppbar 的阴影,主要用来提醒内部的内容低于 SliverAppBar (相当于给人一种物理层次感,否则很容易被认为,头部和内容是连接在一起的...分析完源码,例子的目标很明确,使用 SliverAppBar + TabBar + TabBarView,先看下最后的效果图吧 ?

2.1K30

Flutter | Slivers 系列

概述 CustomScrollView:一个滚动的容器,改组件不接受任何 child,但是你可以直接提供 Slivers 已创建各种滚动效果,例如页面中有多个可滑动的列表,如 Appbar, 列表,网格...FlutterLogo(), FlutterLogo(), FlutterLogo(), ], )) 复制代码 未限制前: ,限制:...在 slivers 系列中,SliverAppbar 可以说是使用频率比较高的组件了,SliverAppbar 为应用栏提供了自定义滚动行为,下面我们来看一下 class _MyHomePageState...,并没有实现任何特殊效果,默认的效果如下: 可以看到在滑动的过程中,SliverAppbar 被顶上去了,这也是非常正常的。...false, child: Center( child: CircularProgressIndicator(), ), ) 复制代码 hasScrollBody :当前组件中是否有可滚动的组件

1.4K11

初识顶部导航栏【flutter20个实例之一】

一、老套路,先看样式 右侧图是我的实际开发中业务界面,用作展示而已 二、讲解(附源码) 1.这里主要是用户AppBar组件 /** AppBar({ Key key, this.leading.../一个 Widget 列表,代表 Toolbar 中所显示的菜单,对于常用的菜单,通常使用 IconButton 来表示;对于不常用的菜单通常使用 PopupMenuButton 来显示为三个点,点击弹出二级菜单...用来在 Toolbar 标题下面显示一个 Tab 导航栏 this.elevation = 4.0,//纸墨设计中控件的 z 坐标顺序,默认值为 4,对于可滚动SliverAppBar,当...SliverAppBar 和内容同级的时候,该值为 0, 当内容滚动 SliverAppBar 变为 Toolbar 的时候,修改 elevation 的值 this.backgroundColor...返回'); }, ), //自定义返回图标样式 automaticallyImplyLeading: false, //设置为false将不会自动出现返回箭头

1.3K20

初识顶部导航栏【flutter20个实例之一】

二、讲解(附源码) 1.这里主要是用户AppBar组件 /** AppBar({ Key key, this.leading,//在标题前面显示的一个控件,在首页通常显示应用的.../一个 Widget 列表,代表 Toolbar 中所显示的菜单,对于常用的菜单,通常使用 IconButton 来表示;对于不常用的菜单通常使用 PopupMenuButton 来显示为三个点,点击弹出二级菜单...用来在 Toolbar 标题下面显示一个 Tab 导航栏 this.elevation = 4.0,//纸墨设计中控件的 z 坐标顺序,默认值为 4,对于可滚动SliverAppBar,当...SliverAppBar 和内容同级的时候,该值为 0, 当内容滚动 SliverAppBar 变为 Toolbar 的时候,修改 elevation 的值 this.backgroundColor...返回'); }, ), //自定义返回图标样式 automaticallyImplyLeading: false, //设置为false将不会自动出现返回箭头

89410

Flutter开发实战分析-animation_demo解析导读

target-20180816144928.gif 可以看到这里的头部滚动是使用SliverPersistentHeader来实现的。而我们之前的头部滚动都是用SliverAppBar来做的。...SliverAppBar 通过跟踪源码,我们发现SliverAppBar其实返回的就是SliverPersistentHeader。 ?...SliverAppBar的_SliverAppBarState中的build方法.png SliverPersistentHeader 会随着sliver滚动到viewport的前缘的距离变化,尺寸随着变化...同时,整体的形状变化,我们不需要其他的效果,只要保持和外部滚动的大小一致就可以了。 我们不使用SliverAppBar。...同时,当他改变,我们需要监听的Widget,重写setState进行rebuild。 我们使用,就可以避免自己手动实现生命周期的监听和取消监听这样的模板化的代码了。

2.5K30

Flutter开发-可滚动组件

你如果需要在两个方向上收缩包装(在滚动轴和横轴)例如 dialog或者 pop-up菜单,在这种情况下,你可以用SingleChildScrollView包裹孩子ListBody。...(ListView有多个构造函数)的共同参数,我们重点来看看这些参数,: itemExtent:该参数如果不为null,则会强制children的“长度”为itemExtent的值;这里的“长度”是指滚动向上子组件的长度...在ListView中,指定itemExtent比让子组件自己决定自身长度会更高效,这是因为指定itemExtent滚动系统可以提前知道列表的长度,而无需每次构建子组件时都去再计算一下,尤其是在滚动位置频繁变化时...默认情况下,ListView的会在滚动方向尽可能多的占用空间。当ListView在一个无边界(滚动向上)的容器中时,shrinkWrap必须为true。...示例 我们创建一个ListView,当滚动位置发生变化时,我们先打印出当前滚动位置,然后判断当前位置是否超过1000像素,如果超过则在屏幕右下角显示一个“返回顶部”的按钮,该按钮点击可以使ListView

4.5K20

【前端词典】4 种滚动吸顶实现方式的比较

hidden 或者 overflow:auto 属性 必须指定 top、bottom、left、right 4 个值之一,否则只会处于相对定位 父元素的高度不能低于 sticky 元素的高度 sticky 元素仅在其父元素内生效...== 'left'){ return offsetL; }else { return offsetT; }} 延伸知识点 offsetWidth: 元素在水平方向上占用的空间大小...offsetWidth = border-left + padding-left + width + padding-right + border-right offsetHeight: 元素在垂直方向上占用的空间大小...则它的偏移量属性都为 0; 每次访问偏移量属性都需要重新计算(保存变量); 在使用的时候可能出现 DOM 没有初始化,就读取了该属性,这个时候会返回 0;对于这个问题我们需要等到 DOM 元素初始化完成再执行...描述: 当页面往下滚动时,吸顶元素需要等页面滚动停止之后才会出现吸顶效果 当页面往上滚动时,滚动到吸顶元素恢复文档流位置时吸顶元素不恢复原样,而等页面停止滚动之后才会恢复原样 原因:在 ios 系统上不能实时监听

2.5K60
领券