首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在颤振的NestedScrollView中设置SliverAppBar的最小高度

在Flutter中,NestedScrollViewSliverAppBar通常一起使用来创建可滚动的页面,其中SliverAppBar可以作为可折叠的顶部栏。如果你想在颤振的NestedScrollView中设置SliverAppBar的最小高度,可以通过以下步骤实现:

基础概念

  • NestedScrollView:这是一个可以包含多个滚动视图的容器,通常用于实现复杂的滚动效果。
  • SliverAppBar:这是NestedScrollView中的一个特殊类型的AppBar,它可以随着滚动而折叠和展开。

相关优势

  • 灵活性SliverAppBar提供了丰富的配置选项,可以实现各种动态的UI效果。
  • 性能优化:与传统的AppBar相比,SliverAppBar在处理大量数据时更加高效。

类型

  • 固定高度:AppBar的高度是固定的。
  • 最小高度:AppBar有一个最小高度,当内容滚动到一定位置时,AppBar会收缩到这个最小高度。

应用场景

  • 新闻应用:顶部栏可以显示新闻分类,随着用户滚动,分类信息会折叠起来。
  • 社交媒体:用户可以滚动查看动态,顶部的个人资料栏会根据滚动位置动态变化。

解决问题的方法

要设置SliverAppBar的最小高度,可以使用minHeight属性。以下是一个示例代码:

代码语言:txt
复制
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: NestedScrollView(
          headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
            return <Widget>[
              SliverAppBar(
                title: Text('NestedScrollView with SliverAppBar'),
                expandedHeight: 200.0,
                minHeight: 50.0, // 设置最小高度
                flexibleSpace: FlexibleSpaceBar(
                  background: Image.asset(
                    'assets/image.jpg',
                    fit: BoxFit.cover,
                  ),
                ),
              ),
            ];
          },
          body: Center(
            child: Text('Scroll down to see the SliverAppBar collapse'),
          ),
        ),
      ),
    );
  }
}

参考链接

通过设置minHeight属性,你可以确保SliverAppBar在滚动时不会收缩到小于指定高度的值。这样可以避免颤振现象,提升用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

SliverPersistentHeader Flutter 中,为我们提供了这么一个作为头部的部件 SliverPersistentHeader,这个部件可以根据滚动的距离缩小高度,有点类似 SliverAppBar...SliverPersistentHeaderDelegate 需要提供一个最大值,最小值,展示内容,以及更新部件条件 比如我们需要展示一个最大高度 300,最小高度 100,居中的文字,那么我们可以这么写这个代理类...final double min; // 最小高度 final Widget child; // 需要展示的内容 CustomSliverPersistentHeaderDelegate...SliverAppbar 的阴影,主要用来提醒内部的内容低于 SliverAppBar (相当于给人一种物理层次感,否则很容易被认为,头部和内容是连接在一起的) 接下来看下 NestedScrollView...接着请注意代码中的那段 assert 中的文字 糟透了的翻译 X 5:sliverOverlapAbsorberHandleFor 传入的参数 context 中必须包含 NestedScrollView

2.2K30

Flutter NestedScrollView实现的一个经典滑动折叠头部图片的效果

Flutter NestedScrollView 滑动组件是用来处理复杂情况下的滑动应用场景,如向上滑动视图时,要折叠隐藏一部分内容,这时候就需要使用到 NestedScrollView 与 SliverAppBar...在本节中是使用 NestedScrollView 结合 SliverAppBar 与 TabBar 、TabBarView 实现的折叠头部效果undefined 【x1】微信公众号的每日提醒 随时随记...: true, ///是否随着滑动隐藏标题 floating: true, ///SliverAppBar展开的高度...是配置在 SliverAppBar 中的 bottom 属性下,通过 buildTabBar 方法来封装的, 代码如下: TabBar buildTabBar() { return TabBar(...,是在 SliverAppBar 的 flexibleSpace 属性中配置的,当然就是使用了 FlexibleSpaceBar,代码如下: String imageUrl = "https:

2.8K11
  • SliverAppBar

    在前面的文章中我们将到了Appbar的用户,它类似于Android中的toolbar,但是熟悉Android开发的童鞋应该知道在Android中还有个Collapsing Toolbar的东西,就是一个可以折叠的标题栏效果...首先我们使用了NestedScrollView中的headerSliverBuilder属性添加了SliverAppBar 然后我们设置展开的高度为200,不让标题栏随着滑动滚动出可视区域 我们使用flexibleSpace...来构建了一个可以滚动的区域 最后我们给NestedScrollView的body加了一个ListView 然后我们来看下效果: ?...我们把 pinned的属性设置为false再看下效果 ?...很丑有没有,由于TabBar的高度所以我们并不能让SliverAppBar滑动到顶部,所以要想实现随着SliverAppBar的移动,把TabBar放在bottom也不是很合适的。

    1.8K30

    不一样角度带你了解 Flutter 中的滑动列表实现

    「本篇不是教你如何使用 API ,而是一些日常开发中不常接触,但是很重要的内容」。...了解完 NestedScrollView 的布局和联动实现之外,最后简单介绍一下  SliverPersistentHeader , 因为经常在  NestedScrollView 里使用的  SliverAppBar...,本质上 「SliverAppBar 的实现靠的就是 SliverPersistentHeader」。...,如下代码所示,在需要 floating 和  pinned 的 Sliver上,可以看到 paintExtent 和 layoutExtent 都有一个最小值。... SliverOverlapAbsorber 用于吸收 SliverPersistentHeader 的高度; 使用 SliverOverlapInjector 将这个高度配置到 body 列表中,让列表知道顶部存在一个固定高度的区域

    1.1K30

    Flutter 首页必用组件NestedScrollView

    今天介绍的组件是NestedScrollView,大部分的App首页都会用到这个组件。 NestedScrollView 可以在其内部嵌套其他滚动视图的组件,其滚动位置是固有链接的。...在普通的ScrollView中, 如果有一个Sliver组件容纳了一个TabBarView,它沿相反的方向滚动(例如,允许用户在标签所代表的页面之间水平滑动,而列表则垂直滚动),则该TabBarView...例如,浏览内部列表以滚动到顶部不会导致外部ScrollView中的SliverAppBar折叠以展开。...reverse参数表示反转滚动方向,并不是由垂直转为水平,而是垂直方向滚动时,默认向下滚动,reverse设置false,滚动方向改为向上,同理水平滚动改为水平向左。...controller为滚动控制器,可以监听滚到的位置,设置滚动的位置等,用法如下: _scrollController = ScrollController(); //监听滚动位置 _scrollController.addListener

    4.3K10

    MCM数控机床切削颤振监测与大数据分析系统构建(一)

    在金属切削加工过程中,刀具与工件之间剧烈的自激振动通常被称为“颤振”。...因此,颤振成为提高机床加工能力的最主要障碍。 依照切削颤振的物理形成原因来划分基本上有3大类: 第1类是振型耦合型颤振; 第 2类是摩擦型颤振; 第 3类是再生型颤振。...振型耦合型颤振是指由于振动系统在 2个方向 上的刚度相近,导致 2个固有振型相接近时而引起 的颤振。摩擦型颤振是指在切削速度方向上刀具与工件之间的相互摩擦所引起的颤振。...,设置Modbus/TCP Server的地址 7、设置显示窗口需要在远程监控界面显示的测量曲线和测量参数。...of Minimum 截取到的信号第一个幅值最小值相对于起始点的时间 Frequency 信号频率 Magnititude 能量频率分布中,能量最大值 FFT_Frequency 能量频率分布中,能量最大值对应的频率值

    2.7K40

    6详解AppBar小部件

    由于它是一个如此常用的组件,因此 Flutter 为该功能提供了一个名为AppBar的专用小部件。 在本教程中,我们将通过一些实际示例向您展示如何在 Flutter 应用程序中自定义 AppBar。...工具栏高度和不透明度 最后,我们有工具栏属性。工具栏包含文字,图标,按钮,和其他任何公司的前景,除了小部件,如Container和Image。...的布局和添加小部件 如何为 AppBar 的图标、文本、背景、高度、阴影颜色和工具栏设置主题 所以我们有了!...,高度和 AppBar 高度一样, // 可以实现一些特殊的效果,该属性通常在 SliverAppBar 中使用 this.bottom,//一个 AppBarBottomWidget...用来在 Toolbar 标题下面显示一个 Tab 导航栏 this.elevation,//控件的 z 坐标顺序,默认值 4,对于可滚动的 SliverAppBar,当 SliverAppBar

    16.4K10

    Android开发笔记(一百三十五)应用栏布局AppBarLayout

    那么Android5.0也同时给出了相应的解决方案,即推出MaterialDesign库,通过该库中的AppBarLayout控件,对Toolbar加以包装,从而实现顶部工具栏的动态变化效果。...NestedScrollView继承自FrameLayout,其用法与ScrollView相似,如都必须且只能带一个直接子视图,都是允许视图上下滚动等等。...既然AppBarLayout的高度是变化的,那也得区分是滚一半还是滚全部。...3、exitUntilCollapsed : 该标志保证页面上至少能看到最小化的工具栏,不会完全看不到工具栏。具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。...具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。然后头部与主体先一起滚动,头部滚到位后,主体继续向上。 向下滚动:头部与主体先一起滚动,一直滚到头部折叠的最小高度。

    2K40

    CoordinatorLayout使用全解析

    enterAlwaysCollapsed:假设你定义了一个最小高度(minHeight)同时enterAlways也定义了,那么view将在到达这个最小高度的时候开始显示,并且从这个时候开始慢慢展开,当滚动到顶部的时候展开完...,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端...在NestedScrollView的名字中其实就可以看出他的作用了,Nested是嵌套的意思,而ToolBar基本需要嵌套使用。...假设你定义了一个最小高度(minHeight)同时enterAlways也定义了,那么view将在到达这个最小高度的时候开始显示,并且从这个时候开始慢慢展开,当滚动到顶部的时候展开完。...exitUntilCollapsed: 同样顾名思义,这个flag时定义何时退出,当你定义了一个minHeight,这个view将在滚动到达这个最小高度的时候消失。

    2.2K20

    Flutter之SliverAppBar

    SliverAppBar控件可以实现页面头部区域展开、折叠的效果,类似于Android中的CollapsingToolbarLayout。 先看下SliverAppBar实现的效果,效果图如下: ?...SliverAppBar中有一个非常重要的参数flexibleSpace,flexibleSpace是SliverAppBar中展开和折叠区域,flexibleSpace与expandedHeight一起使用..., expandedHeight表示flexibleSpace的高度, SliverAppBar( expandedHeight: 200.0, flexibleSpace...floating 设置为true时,向下滑动时,即使当前CustomScrollView不在顶部,SliverAppBar也会跟着一起向下出现 pinned 设置为true时,当SliverAppBar...内容滑出屏幕时,将始终渲染一个固定在顶部的收起状态 snap 设置为true时,当手指放开时,SliverAppBar会根据当前的位置进行调整,始终保持展开或收起的状态,此效果在floating=true

    1.4K30

    当车削加工时出现振刀打刀现象该如何处理?

    机床在加工过程中震动,最常见于车床,镗床加工过程中,造成工件表面有颤纹,返工率、废品率高,伴有振刀打刀现象。...机床振动原因一般是机床–工件–刀具三个系统中任一个或多个系统刚性不足,振动、振刀产生时,我们该从哪些方面入手排查解决这类问题。 一、工件与刀具方面 1.工件方面 细长轴类的外圆车削。...一般切削点离夹持点的距离,如果长径比超过3的话就容易振刀,可以考虑改变下工艺; 薄壁零件的外圆车削; 箱形部品(如钣金焊接结构件)车削; 超硬材质切削。...看一下你现在用的是90度刀还是45度的,试换一下。 另外,走刀(进给量)太小,也可能是一种产生颤纹的诱因,可略调整加大一点。你调整一下转速、单刀切削深度、进给量试一下来排除共振点。...三、采用其他一些抑制振刀的对策 如果你的主轴瓦已经真的紧到位了,工件也不是薄壁空心件或悬伸过长,卡盘夹紧也没问题。采用其他一些抑制振刀的对策。

    3.4K50

    flutter系列之:使用SliverList和SliverGird

    简介 在上一篇文章我们讲解SliverAppBar的时候有提到过,Sliver的组件一般都用在CustomScrollView中。...要注意的是SliverList并不能指定子widget的extent大小,如果你想指定List中的子widget的extent大小的话,那么可以使用SliverFixedExtentList: class...SliverList和SliverGird的使用 有了上面介绍的SliverList和SliverGird的构造函数,接下来我们具体来看下如何在项目中使用SliverList和SliverGird。...默认情况下SliverList和SliverGird是需要和CustomScrollView一起使用的,所以我们先创建一个CustomScrollView,在它的slivers属性中,放入一个SliverAppBar...100,运行可以得到下面的界面: 可以看到List中的子Widget高度发生了变化。

    99830

    flutter系列之:使用SliverList和SliverGird

    简介 在上一篇文章我们讲解SliverAppBar的时候有提到过,Sliver的组件一般都用在CustomScrollView中。...要注意的是SliverList并不能指定子widget的extent大小,如果你想指定List中的子widget的extent大小的话,那么可以使用SliverFixedExtentList: class...SliverList和SliverGird的使用 有了上面介绍的SliverList和SliverGird的构造函数,接下来我们具体来看下如何在项目中使用SliverList和SliverGird。...默认情况下SliverList和SliverGird是需要和CustomScrollView一起使用的,所以我们先创建一个CustomScrollView,在它的slivers属性中,放入一个SliverAppBar...100,运行可以得到下面的界面: 可以看到List中的子Widget高度发生了变化。

    55110
    领券