Flutter NestedScrollView 滑动组件是用来处理复杂情况下的滑动应用场景,如向上滑动视图时,要折叠隐藏一部分内容,这时候就需要使用到 NestedScrollView 与 SliverAppBar...在本节中是使用 NestedScrollView 结合 SliverAppBar 与 TabBar 、TabBarView 实现的折叠头部效果undefined 【x1】微信公众号的每日提醒 随时随记...( ///true SliverAppBar 不会滑动 pinned: true, ///是否随着滑动隐藏标题 floating...是配置在 SliverAppBar 中的 bottom 属性下,通过 buildTabBar 方法来封装的, 代码如下: TabBar buildTabBar() { return TabBar(...,是在 SliverAppBar 的 flexibleSpace 属性中配置的,当然就是使用了 FlexibleSpaceBar,代码如下: String imageUrl = "https:
先来简单看下部分效果图: 本文内容可能有点多,但是都很简单,配上效果图味道更佳~ 什么是SliverAppBar SliverAppBar 类似于Android中的CollapsingToolbarLayout...= true,//没有leading为true的时候,默认返回箭头,没有leading且为false,则显示title this.title,//标题 this.actions,//标题右侧的操作...this.flexibleSpace,//可以理解为SliverAppBar的背景内容区 this.bottom,//SliverAppBar的底部区 this.elevation...下拉的时候,SliverAppBar是直接拉下来还是先拉下来再展开。...添加TabBar 在SliverAppBar的bottom属性中添加TabBar,直接改造源码中的例子 var _tabs = []; _tabs = [
SliverAppBar控件可以实现页面头部区域展开、折叠的效果,类似于Android中的CollapsingToolbarLayout。 先看下SliverAppBar实现的效果,效果图如下: ?...SliverAppBar控件需要和CustomScrollView搭配使用,SliverAppBar要通常放在slivers的第一位,后面接其他sliver控件。...SliverAppBar中有一个非常重要的参数flexibleSpace,flexibleSpace是SliverAppBar中展开和折叠区域,flexibleSpace与expandedHeight一起使用...: FlexibleSpaceBar( ), ), SliverAppBar其他常用属性说明如下: 属性 说明 leading 左侧控件,通常情况下为..."返回"图标 title 标题,通常为Text控件 actions 右侧控件 flexibleSpace 展开和折叠区域 bottom 底部控件 elevation 阴影 expandedHeight
前言: 问题引入 FlexibleSpaceBar 是一个和 SliverAppBar 共生的组件,一般不单独使用。...如下所示,在滑动的过程中 FlexibleSpaceBar 的 title 区域会有缩放的效果。...探索: FlexibleSpaceBar 组件的标题如何实现缩放? 在滑动中,title 组件的内容有缩放效果是实事,这说明在组件的 构建逻辑 中必然存在缩放的变换。...所以摆在我们面前的第一个问题是: FlexibleSpaceBar 组件的标题如何 实现缩放 的?...探索: FlexibleSpaceBar 组件是如何感知滑动数据的? 从上面效果中可以看出,SliverAppBar 滑动距离和剩余空间的比值,会作为缩放数值的依据。
pinned表示SliverAppBar在滚动的过程中是否会固定在界面的边缘。...通常来说SliverAppBar是和CustomScrollView一起使用的,也就是说SliverAppBar会被封装在CustomScrollView中。...CustomScrollView中除了SliverAppBar之外,还可以添加其他的sliver组件。...这里的flexibleSpaces是一个FlexibleSpaceBar对象,这里我们设置了title和background属性。...总结简单点说,SliverAppBar就是一个在滑动中可变大小的AppBar,我们可以通过设置不同的参数来实现不同的效果。
pinned 表示SliverAppBar在滚动的过程中是否会固定在界面的边缘。...通常来说SliverAppBar是和CustomScrollView一起使用的,也就是说SliverAppBar会被封装在CustomScrollView中。...CustomScrollView中除了SliverAppBar之外,还可以添加其他的sliver组件。...这里的flexibleSpaces是一个FlexibleSpaceBar对象,这里我们设置了title和background属性。...总结 简单点说,SliverAppBar就是一个在滑动中可变大小的AppBar,我们可以通过设置不同的参数来实现不同的效果。
顶部状态栏在日常中是必不可少的,今天和尚尝试一下可折叠状态栏的使用; 和尚以前在学习滑动冲突时曾用过 Sliver 系列的 Widget,和尚这次尝试用 SliverAppBar...来处理; SliverAppBar 源码分析 const SliverAppBar({ Key key, this.leading, this.automaticallyImplyLeading...title:顶部标题 Widget 常见的是文字标题等; centerTitle:true 为标题 Widget 居中,false 默认居左; actions:顶部右侧菜单组,可设置多个菜单按钮等;...expandedHeight:状态栏展开高度; flexibleSpace:状态栏展开 Widget; flexibleSpace: FlexibleSpaceBar( title: Text...true;官方推荐的样例视频很好的诠释出滑动过程中列表的滑动与顶部状态栏滑动变化; floating: false, pinned: false, snap: false floating: true
老孟导读:昨天Flutter 1.17版本重磅发布,新的版本主要是优化性能、修复bug,有人觉得此版本毫无亮点,但也从另一方面体现了Flutter目前针对移动端已经较为完善,想了解具体内容,文末有链接,...今天介绍的组件是NestedScrollView,大部分的App首页都会用到这个组件。 NestedScrollView 可以在其内部嵌套其他滚动视图的组件,其滚动位置是固有链接的。...在普通的ScrollView中, 如果有一个Sliver组件容纳了一个TabBarView,它沿相反的方向滚动(例如,允许用户在标签所代表的页面之间水平滑动,而列表则垂直滚动),则该TabBarView...例如,浏览内部列表以滚动到顶部不会导致外部ScrollView中的SliverAppBar折叠以展开。...( expandedHeight: 230.0, pinned: true, flexibleSpace: FlexibleSpaceBar( title:
概述 CustomScrollView:一个滚动的容器,改组件不接受任何 child,但是你可以直接提供 Slivers 已创建各种滚动效果,例如页面中有多个可滑动的列表,如 Appbar, 列表,网格...最主要的原因就是可以在 slives 中添加多个组件,如在列表的上面和下面添加更多的内容。...在 SliverPrototypeExtentList 中,可以通过 prototypeItem 来传入一个原型,这个原型并不会渲染到屏幕上,在运行的过程中,Flutter 会将原型的尺寸计算出来,之后就会把所有的元素尺寸设置成这个原型的尺寸...在 slivers 系列中,SliverAppbar 可以说是使用频率比较高的组件了,SliverAppbar 为应用栏提供了自定义滚动行为,下面我们来看一下 class _MyHomePageState...SliverAppbar,并没有实现任何特殊效果,默认的效果如下: 可以看到在滑动的过程中,SliverAppbar 被顶上去了,这也是非常正常的。
简介 在上一篇文章我们讲解SliverAppBar的时候有提到过,Sliver的组件一般都用在CustomScrollView中。...除了SliverAppBar之外,我们还可以为CustomScrollView添加List或者Grid来实现更加复杂的组合效果。 今天要向大家介绍的就是SliverList和SliverGird。...要注意的是SliverList并不能指定子widget的extent大小,如果你想指定List中的子widget的extent大小的话,那么可以使用SliverFixedExtentList: class...SliverList和SliverGird的使用 有了上面介绍的SliverList和SliverGird的构造函数,接下来我们具体来看下如何在项目中使用SliverList和SliverGird。...默认情况下SliverList和SliverGird是需要和CustomScrollView一起使用的,所以我们先创建一个CustomScrollView,在它的slivers属性中,放入一个SliverAppBar
因为是MD中Card的样式,所以需要在最外层包裹一层Card 同时,图中未标注的是,padding的部分。在Flutter中,要实现padding,只要在它包裹在外面一层布局下就可以了。...SliverAppBar中的flexibleSpace来存放appBar内显示的其他控件 默认的 SliverAppBar的pined为false,故他会跟着滚上去。...我们这里需要根据滚动的量去改变FlexibleSpaceBar内我们创建的logo和图标的大小。...题外话:FlexibleSpaceBar的实现方式和这种方式不同。...还有一个就是SizedBox中定义的Rect来控制占用的控件。
首先看下 SliverAppBar 的源码吧,其实和 AppBar 的参数差不多,只是多了一些比较特殊的属性 const SliverAppBar({ Key key, this.leading...SliverPersistentHeader Flutter 中,为我们提供了这么一个作为头部的部件 SliverPersistentHeader,这个部件可以根据滚动的距离缩小高度,有点类似 SliverAppBar...糟透了的翻译 X 2:最常用的情况,就是在其 headerSliverBuilder 中使用携带 TabBar 的 SliverAppBar(就是使用 SliverAppBar 的 bottom 属性添加...SliverAppbar 的阴影,主要用来提醒内部的内容低于 SliverAppBar (相当于给人一种物理层次感,否则很容易被认为,头部和内容是连接在一起的) 接下来看下 NestedScrollView...接着请注意代码中的那段 assert 中的文字 糟透了的翻译 X 5:sliverOverlapAbsorberHandleFor 传入的参数 context 中必须包含 NestedScrollView
应用程序栏由工具栏和其它可能的部件(如TabBar和FlexibleSpaceBar)组成。...对于可滚动的应用程序栏,请参阅SliverAppBar,该应用程序将AppBar嵌入长条中以用于CustomScrollView。...SliverAppBar, 它使用AppBar提供一个灵活的应用程序栏,可以在CustomScrollView中使用....TabBar, 如果屏幕有多个页面排列在选项卡中,它通常放置在AppBar的bottom插槽中. IconButton,它用于在应用栏上显示按钮的actions....final title → Widget Appbar中显示的主要部件. [...] final titleSpacing → double 标题内容在横轴上的间距。
由于它是一个如此常用的组件,因此 Flutter 为该功能提供了一个名为AppBar的专用小部件。 在本教程中,我们将通过一些实际示例向您展示如何在 Flutter 应用程序中自定义 AppBar。...以下是我们将介绍的内容: Flutter 中的 AppBar 是什么? 应用栏布局 自定义 AppBar Flutter 中的 AppBar 是什么?...工具栏包含文字,图标,按钮,和其他任何公司的前景,除了小部件,如Container和Image。...用来在 Toolbar 标题下面显示一个 Tab 导航栏 this.elevation,//控件的 z 坐标顺序,默认值 4,对于可滚动的 SliverAppBar,当 SliverAppBar...和内容同级的时候,该值为 0, // 当内容滚动 SliverAppBar 变为 Toolbar 的时候,修改 elevation 的值。
Sliver系列组件有很多,比如SliverList、SliverGrid、SliverFixedExtentList、SliverPadding、SliverAppBar等。...用法如下: CustomScrollView( slivers: [ SliverAppBar( pinned: true, expandedHeight...: 230.0, flexibleSpace: FlexibleSpaceBar( title: Text('复仇者联盟'), background: Image.network...primary设置为true时,不能设置controller,因为primarytrue时,controller使用PrimaryScrollController,这种机制带来的好处是父组件可以控制子树中可滚动组件的滚动行为...,例如,Scaffold正是使用这种机制在iOS中实现了点击导航栏回到顶部的功能。
,如果子树中的滚动组件没有显示的指定,则会使用这个默认的。...可滚动组件中有很多都支持 Sliver 的延时构建模型,如 ListView,GridView ,但是也有不支持改模型的 SingleChildScrollView 主轴和纵轴 在滚动组件的坐标描述中,...其实此属性的本质上是决定可滚动组件的初始滚动位置是在 头 还是在 尾 ,如 false 时,初始位置在头,反之则在 尾 primary:指是否使用 widget 树中默认的 PrimaryScrollController...是异步执行完成的回调 还有问题可以参考这篇文章 最终的效果如下: 添加固定列表头 很多时候我们需要给列表添加一个固定表头,比如实现一个商品列表,就需要在列表添加一个 商品列表 标题 以往的经验告诉我...:SliverAppBar 对应 AppBar,两者不同之处在于 SliverAppBar 可以集成到 CustomScrollView 中,SliverAppBar 可以结合 FlexibleSpaceBar
1.图示 2.解释 AppBar 有以下常用属性: leading → Widget - 在标题前面显示的一个控件,在首页通常显示应用的 logo;在其他界面通常显示为返回按钮。...title → Widget - Toolbar 中主要内容,通常显示为当前界面的标题文字。...elevation → double - 控件的 z 坐标顺序,默认值为 4,对于可滚动的 SliverAppBar,当 SliverAppBar 和内容同级的时候,该值为 0, 当内容滚动 SliverAppBar...flexibleSpace → Widget - 一个显示在 AppBar 下方的控件,高度和 AppBar 高度一样,可以实现一些特殊的效果,该属性通常在 SliverAppBar 中使用。...textTheme → TextTheme - Appbar 上的文字样式。 centerTitle → bool - 标题是否居中显示,默认值根据不同的操作系统,显示方式不一样。
在前面的文章中我们将到了Appbar的用户,它类似于Android中的toolbar,但是熟悉Android开发的童鞋应该知道在Android中还有个Collapsing Toolbar的东西,就是一个可以折叠的标题栏效果...接下来我们来介绍下SliverAppBar SliverAppBar ---- 我看还是先来看下SliverAppBar的构造方法 构造方法也是非常的简单,但是我们却不能直接使用它,由官方文档可以看到我们通常结合...首先我们使用了NestedScrollView中的headerSliverBuilder属性添加了SliverAppBar 然后我们设置展开的高度为200,不让标题栏随着滑动滚动出可视区域 我们使用flexibleSpace...很丑有没有,由于TabBar的高度所以我们并不能让SliverAppBar滑动到顶部,所以要想实现随着SliverAppBar的移动,把TabBar放在bottom也不是很合适的。...但是有童鞋就问问了,我们怎么让这个SliverPersistentHeader中的内容(TabBar)不随着ListView的滚动而滑动呢?
作为系列文章的第七篇,本篇主要在前文的基础上,再深入了解 Widget 和布局中的一些常识性问题。...在第六篇中我们知道了 Widget、Element、RenderObject 三者之间的关系,其中我们最为熟知的 Widget ,作为“配置文件”的存在,在 Flutter 中它的功能都是比较单一的,属于...( ̄▽ ̄) 一、单子元素布局 在 Flutter 单个子元素的布局 Widget 中,Container 无疑是被用的最广泛的,因为它在“功能”上并不会如 Padding 等 Widget 那样功能单一...三、多子元素滑动布局 滑动布局作为 “多子元素布局” 的另一个分支,如 ListView 、GridView、Pageview ,它们在实现上要复杂的多,从下图一个的流程上我们大致可以知道它们的关系:...添加到 ViewPort 中,如下代码所示: CustomScrollView( slivers: [ const SliverAppBar( pinned: