首页 > 其他分享 >一统天下 flutter - widget Sliver: SliverAppBar/FlexibleSpaceBar - 可展开/收缩的标题栏(需要在 CustomScrollView 中使用)

一统天下 flutter - widget Sliver: SliverAppBar/FlexibleSpaceBar - 可展开/收缩的标题栏(需要在 CustomScrollView 中使用)

时间:2023-04-23 16:57:39浏览次数:56  
标签:FlexibleSpaceBar widget title CustomScrollView 标题栏 SliverAppBar 收缩 true

源码 https://github.com/webabcd/flutter_demo
作者 webabcd

一统天下 flutter - widget Sliver: SliverAppBar/FlexibleSpaceBar - 可展开/收缩的标题栏(需要在 CustomScrollView 中使用)

示例如下:

lib\widget\sliver\sliver_app_bar.dart

/*
 * SliverAppBar/FlexibleSpaceBar - 可展开/收缩的标题栏(需要在 CustomScrollView 中使用)
 */

import 'dart:math';

import 'package:flutter/material.dart';

class SliverAppBarDemo extends StatefulWidget {
  const SliverAppBarDemo({Key? key}) : super(key: key);

  @override
  _SliverAppBarDemoState createState() => _SliverAppBarDemoState();
}

class _SliverAppBarDemoState extends State<SliverAppBarDemo> {

  final _random = Random();
  Color _getRandomColor() {
    return Color.fromARGB(255, _random.nextInt(256), _random.nextInt(256), _random.nextInt(256),);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: CustomScrollView(
        slivers: [
          SliverAppBar(
            /// 完全展开时的高度
            expandedHeight: 200,
            /// true - 下拉滚动时,即使当前 CustomScrollView 不在顶部,SliverAppBar 也会向下展开
            /// false - 下拉滚动时,只有当前 CustomScrollView 在顶部时,SliverAppBar 才会向下展开(前提是 snap 为 false)
            floating: true,
            /// true - 手指放开时,SliverAppBar 如果是展开方向的话,则变为完全展开状态;如果是收缩方向且当前 CustomScrollView 不在顶部,则变为完全收缩状态
            /// false - 手指放开时,SliverAppBar 保持当前的展开大小不变
            snap: true,
            /// true - SliverAppBar 在完全收缩状态时,会显示为一个条状组件
            /// false - SliverAppBar 在完全收缩状态时,会彻底隐藏
            pinned: true,

            /// title
            title: const Text('SliverAppBar title'),
            /// 背景颜色
            backgroundColor: Colors.orange,

            /// 还有一些参数的使用基本和 AppBar 是一样的,请参见 /lib/widget/structure/scaffold_app_bar.dart
            /// foregroundColor, leading, automaticallyImplyLeading, actions, bottom, shape, ...

            /// FlexibleSpaceBar - 可展开/收缩
            flexibleSpace: FlexibleSpaceBar(
              /// 背景
              background: Image.asset('assets/son.jpg',fit: BoxFit.cover,),
              /// title
              title: const Text('FlexibleSpaceBar title'),
              /// title 是否显示在中间
              centerTitle: true,
              /// title 的边距
              titlePadding: EdgeInsets.zero,
              /// SliverAppBar 收缩时,FlexibleSpaceBar 背景的动画效果
              ///   parallax - 背景随着 SliverAppBar 的收缩,向上以视差的方式移动,这个是默认值
              ///   pin - 背景随着 SliverAppBar 的收缩,向上跟随移动
              ///   none - 背景位置不变
              collapseMode: CollapseMode.parallax,
              /// SliverAppBar 在完全展开状态时,FlexibleSpaceBar 的 title 的放大倍数
              expandedTitleScale: 1.5,
            ),
          ),

          SliverList(
            delegate: SliverChildBuilderDelegate((context, index) =>
                Container(color: _getRandomColor(), height: 150,),
              childCount: 20,
            ),
          ),
        ],
      ),
    );
  }
}

源码 https://github.com/webabcd/flutter_demo
作者 webabcd

标签:FlexibleSpaceBar,widget,title,CustomScrollView,标题栏,SliverAppBar,收缩,true
From: https://www.cnblogs.com/webabcd/p/flutter_lib_widget_sliver_sliver_app_bar.html

相关文章

  • 一统天下 flutter - widget Sliver: SliverToBoxAdapter - 为不可滚动组件提供 sliver
    源码https://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widgetSliver:SliverToBoxAdapter-为不可滚动组件提供sliver效果示例如下:lib\widget\sliver\sliver_to_box_adapter.dart/**SliverToBoxAdapter-为不可滚动组件提供sliver效果......
  • 一统天下 flutter - widget Sliver: NestedScrollView - 为可滚动组件提供 sliver 效
    源码https://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widgetSliver:NestedScrollView-为可滚动组件提供sliver效果示例如下:lib\widget\sliver\nested_scroll_view.dart/**NestedScrollView-为可滚动组件提供sliver效果*/import......
  • 一统天下 flutter - widget Sliver: SliverPersistentHeader - 自定义可展开/收缩的标
    源码https://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widgetSliver:SliverPersistentHeader-自定义可展开/收缩的标题栏示例如下:lib\widget\sliver\sliver_persistent_header.dart/**SliverPersistentHeader-自定义可展开/收缩的标题栏......
  • 一统天下 flutter - widget 选择类: showDatePicker()/showTimePicker/CalendarDatePi
    源码https://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widget选择类:showDatePicker()/showTimePicker/CalendarDatePicker-日期选择和时间选择示例如下:lib\widget\selection\time_picker.dart/**showDatePicker()/showTimePicker/Calenda......
  • Android之AppWidget 开发浅析
    什么是AppWidgetAppWidget即桌面小部件,也叫桌面控件,就是能直接显示在Android系统桌面上的小程序,先看图:图中我用黄色箭头指示的即为AppWidget,一些用户使用比较频繁的程序,可以做成AppWidget,这样能方便地使用。典型的程序有时钟、天气、音乐播放......
  • 一统天下 flutter - widget 基础: 生命周期
    一统天下flutterhttps://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widget基础:生命周期示例如下:lib\widget\basic\lifecycle.dart/**生命周期*/import'package:flutter/material.dart';import'../../helper.dart';classLifecy......
  • Visual Studio编译和使用wxWidgets
    一、下载到官网:https://www.wxwidgets.org/官网会引导跳到github:https://github.com/wxWidgets/wxWidgets/releases/tag/v3.2.2github有很多个下载链接,有代码(source)和预编译包(binary),后者又分开发版(dev)和发布版(release)预编译包的VC版本和VS版本对应如下:*vc14x兼容20......
  • pyqt5-QTreeWidget
    1、介绍树形组件2、类和初始化classQTreeWidget(QTreeView):"""QTreeWidget(parent:QWidget=None)"""def__init__(self,parent=None):pass3、属性4、方法(1)setColumnCount设置列数,参数为int类型。树形组件只能是设置为1(2)setHeaderLabels设......
  • pyqt5-QTableWidget
    1、介绍这是pyqt的表格组件。2、类和初始化classQTableWidget(QTableView):def__init__(self,*__args):pass示例:self.table=QTableWidget(self.w)3、属性4、方法(1)columnCount和rowCount返回int类型,即列数和行数,最低为0,即空白,此时没有表头(2)setColum......
  • pyqt5-QTabWidget
    QTabWidget详解–fengMisaka–博客园(cnblogs.com)1、介绍标签页组件。2、类和初始化classQTabWidget(QWidget):def__init__(self,parent=None):pass3、属性4、常用方法(1)addTabdefaddTab(self,QWidget,*__args):"""addTa......