热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flutter基础Widgets之AppBar详解

概述AppBarMaterial风格应用栏,有工具栏和其他的Widget构成应用栏通常用于Scaffold.appBar属性,该属性将应用栏放置在屏幕顶部的固定高度小部件中。对于可

概述

AppBar Material风格应用栏,有工具栏和其他的Widget构成 应用栏通常用于Scaffold.appBar属性,该属性将应用栏放置在屏幕顶部的固定高度小部件中。对于可滚动的应用栏,请参阅SliverAppBar,它将一个AppBar嵌入到一个条子中,以便在CustomScrollView中使用。

appBar构造函数

AppBar({
    Key key,
    this.leading,
    this.automaticallyImplyLeading = true,
    this.title,
    this.actions,
    this.flexibleSpace,
    this.bottom,
    this.elevation,
    this.backgroundColor,
    this.brightness,  
    this.iconTheme,
    this.textTheme,
    this.primary = true,
    this.centerTitle,
    this.titleSpacing = NavigationToolbar.kMiddleSpacing,
    this.toolbarOpacity = 1.0,
    this.bottomOpacity = 1.0,
  })
  • leading 在title组件前面的组件,一般是一个图标按钮,比如一个抽屉按钮
  • automaticallyImplyLeading 配合leading使用,取决于automaticallyImplyLeading == true && leading ==null 此时会自动做出一些哈事情
  • title appBar的主要部件,类型为Widget,一般显示文本
  • actions title之后显示的部件,其实这样看来,Appbar可以看成一个Row (children: [])布局
  • flexibleSpace 也是一个Widgets,不过好像有一些定义的Widgets 实在不知道怎么用,因为感觉大量重复
  • bottom 这个小部件出现在应用程序栏的底部。 通常是一个TarBar,即一个标签栏
  • elevation 控制下方阴影栏的坐标
  • backgroundColor 背景颜色
  • brightness 应用栏材质的亮度
  • iconTheme icon主题设置
  • textTheme 文本主题设置
  • primary appbar是否显示在任务栏顶部
  • centerTitle title是否居中 实测没变化
  • titleSpacing 横轴上围绕title内容的间距 0.0即占据所有有用空间
  • toolbarOpacity 应用程序栏的工具栏的透明程度。值1.0是完全不透明的,值0.0是完全透明的
  • toolbarOpacity appBar底部透明度,设置方式同toolbarOpacity

实例-实现一个带抽屉的云盘搜索界面

class AppBarLearn extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new DefaultTabController(
        length: 3,
        child: new Scaffold(
          // AppBar  Material 应用栏,有工具栏和其他的Widget构成 应用栏通常用于Scaffold.appBar属性,
          // 该属性将应用栏放置在屏幕顶部的固定高度小部件中。对于可滚动的应用栏,
          // 请参阅SliverAppBar,它将一个AppBar嵌入到一个条子中,以便在CustomScrollView中使用。
          appBar: AppBar(
            // leading: ,

            // 现在标题前面的Widget,一般为一个图标按钮,也可以是任意Widget
            leading: Builder(
              builder: (BuildContext context) {
                return IconButton(
                  icon: const Icon(Icons.menu),
                  // 如果有抽屉的话的就打开
                  onPressed: () {
                    Scaffold.of(context).openDrawer();
                  },
                  // 显示描述信息
                  tooltip:
                      MaterialLocalizations.of(context).openAppDrawerTooltip,
                );
              },
            ),
            // 配合leading使用,取决于automaticallyImplyLeading == true && leading ==null ,此时会自动做出一些哈事情。
            automaticallyImplyLeading: true,
            // appBar的主要部件,类型为Widget,那么尝试做成输入框?
            title: TextField(
                // 光标颜色
                cursorColor: Colors.blueGrey),
            // title之后显示的部件,其实这样看来,Appbar可以看成一个Row (children: [])布局
            actions: [
              Container(
                padding: EdgeInsets.only(right: 16),
                child: Icon(Icons.search),
              ),
            ],
            // 也是一个Widgets,不过好像有一些定义的Widgets 实在不知道怎么用,应为感觉大量重复,
            flexibleSpace: FlexibleSpaceBar(title: Text('')),
            // 这个小部件出现在应用程序栏的底部。 通常是一个TarBar,即一个标签栏
            bottom: new TabBar(tabs: [
              new Tab(icon: Icon(Icons.cloud_done)),
              new Tab(icon: Icon(Icons.cloud_download)),
              new Tab(icon: Icon(Icons.cloud_upload)),
            ]),
            // 控制下方阴影栏的坐标
            elevation: 4.0,
            // 背景颜色
            backgroundColor: Colors.blueAccent,
            // 应用栏材质的亮度。
            brightness: Brightness.light,
            // icon主题设置
            iconTheme: IconThemeData(),
            // 文本主题设置
            textTheme: TextTheme(),
            // appbar是否显示在任务栏顶部
            primary: true,
            // title是否居中 实测没变化
            centerTitle: true,
            // 横轴上围绕title内容的间距  0.0即占据所有有用空间
            titleSpacing: 0.0,
            // 应用程序栏的工具栏部分是多么不透明。值1.0是完全不透明的,值0.0是完全透明的。
            toolbarOpacity: 1,
            // appabr底部透明度,设置方式同toolbarOpacity
            bottomOpacity: 1,
          ),
          body: new TabBarView(children: [
            new Icon(Icons.cloud_done, size: 100),
            new Icon(Icons.cloud_download, size: 100),
            new Icon(Icons.cloud_upload, size: 100),
          ]),
          // 定义一个空抽屉
          drawer: Drawer(),
        ));
  }
}

实现效果:
Flutter 基础Widgets之AppBar详解

Flutter 基础Widgets之AppBar详解


推荐阅读
  • 关于自定义View,相信多数开发者都已经非常熟悉了,网络上的例子也非常多,各种炫酷吊炸天的自定义View也层出不穷。本文只是一个初级学习教程,对于初学者有参考价值。下面正式进入主 ... [详细]
  • --查看当前已有的用户SELECTUsernameFROMdba_users;--创建临时CREATEUSERgzmpcIDENTIFIEDBYPASSWORD;--授权GRANT ... [详细]
  • Thefollowingentryallowsuserstoadjustthehorizontaldefaultwidthbetweenthet ... [详细]
  • 【Android Lock Pattern】图案解锁(一):LockPatternView源代码
    选择Settings-Security-Setupscreenlock设置屏幕锁选择Pattern设置图案在我的真机HTCDesire(Android2.2)上,截图如下:An ... [详细]
  • Activity为Android应用程序的一个关键组成部分,它通常提供一个用户界面用来和用户交互以完成某个功能,比如拨号,拍照,发送电子邮件或者是浏览地图,在移动设备上,Activ ... [详细]
  • Hibernate的入门:
    1下载Hibernate5http:sourceforge.netprojectshibernatefileshibernate-orm5.0.7.Finalhibernate-r ... [详细]
  • Android中button的onClick事件几种方法利用三种方法,学习button的监听事件。方法一源码如下:packagecom.example. ... [详细]
  • 浅谈php7的重大新特性_PHP 7.4.0刚刚发布!一起看看有哪些新特性
    php中文网最新课程每日17点准时技术干货分享PHP7.4.0发布了,此版本标志着PHP7系列的第四次特性更新。PHP7.4.0进行了许多改进,并带来了 ... [详细]
  • Android使用系统相机拍照和读取相册照片1.拍照(对于7.0以上的版本,不在允许直接访问uri)`若不指定输出路径intent.putExtra(MediaStore.EXTR ... [详细]
  • 概况:我要怎样o找到设备o位置?o感应动作?o感应设备o方位?o独特地定义设备o? ... [详细]
  • XAF之刷新View的方法
    有时,我们可能需要刷新View的显示内容,比如后台线程可能一直在向数据库里放数据,而XAF的显示对应数据库表的View是不会自动刷新的&# ... [详细]
  • 测试用例的重要局部导入依赖{代码}capabilities设置初始化driverwebdriver.remote 隐式期待,加强用例的稳定性元素定位与操作断言capabilities设置官网文档阐明罕用参数键形容值noReset在以后session下不会重置利用的状态。默认值为falsetrue,falsefullReset(iOS)删除所有的模拟器文件夹。(Android)要革除 ... [详细]
  • 开发笔记:实践前后端分离,要注意什么?
    本文由编程笔记#小编为大家整理,主要介绍了实践前后端分离,要注意什么?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 发现很多时候展示一堆文字,需要让局部的某些字变粗啊,变大、变颜色、能点击等等要求,今天在这简单总结下方便日后直接复用(用ht ... [详细]
  • 本文是《开发你的WordPress主题框架》专题的第10篇,共10篇:为你的WordPress主题框架添加动作挂钩WordPress主题框架是如何工作的决定如何开发你的WordPress主题框架为你的WordPress主题框架建立起始文件为你的Wo ... [详细]
author-avatar
吃货程序猿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有