AppBar 应用栏是各种应用程序中最常用的组件之一。它可用于容纳搜索字段、以及在页面之间导航的按钮,或者只是页面标题。...由于它是一个如此常用的组件,因此 Flutter 为该功能提供了一个名为AppBar的专用小部件。 在本教程中,我们将通过一些实际示例向您展示如何在 Flutter 应用程序中自定义 AppBar。...以下是我们将介绍的内容: Flutter 中的 AppBar 是什么? 应用栏布局 自定义 AppBar Flutter 中的 AppBar 是什么?...: AppBar(), drawer: Drawer(), ); } } Flutter AppBar 菜单图标 如果需要,可以通过设置automaticallyImplyLeadingfalse...AppBar 现在我们熟悉了 AppBar 的布局,让我们通过使用主题选项将自定义提升到一个新的水平。
这相当于一个框架,方便你在应用中创建常见的 UI 元素和布局,如应用栏、抽屉、底部导航栏等。...Scaffold 组件的关键属性appBar: 一个位于顶部的应用栏(AppBar),通常包含标题、导航按钮和其他操作项。body: 主体内容区域,用于放置应用的主要内容。...drawer: 一个抽屉(Drawer),从屏幕边缘滑出,用于显示导航链接或选项。bottomNavigationBar: 一个位于底部的导航栏,用于在不同的页面之间切换。...final:在运行时初始化,只能被赋值一次,用于定义在运行时确定但不可改变的值。普通变量:可以在任何时候修改,适用于需要频繁更改的数据。...适用场景:适用于需要更多自定义样式的场景。6. **RawMaterialButton**特点:提供了最基础的按钮实现,允许最大程度的自定义。适用场景:适用于需要高度定制按钮外观的情况。7.
: AppBar(title: Center(child: Text('我是标题'))), drawer: Text('这是抽屉栏'), body: Text...: AppBar(title: Center(child: Text('我是标题'))), drawer: Text('这是抽屉栏'), body: Text...('你好,这是一个简单的页面'), ), ); } } 在编写应用程序时,通常会创建新的widget,这些widget是无状态的StatelessWidget...drawer:左边侧边栏控件 endDrawer:右边侧滑栏 backgroundColor: 内容的背景颜色,默认使用的是 ThemeData.scaffoldBackgroundColor 的值 4...Colomn:child在竖直(上下)方向上进行布局 Expanded:填充剩余空间,必须放置于Row, Column或Flex内, Stack+Positoned:Stack与Row和Clomn类似,只不过适用于子
* 自定义TabController(上面的是默认TabController) 自定义的好处是可以在addListener中增加监听,通过setState修改状态 import 'package:flutter...drawer: Drawer( child: Column( children: [ //头部...endDrawer: Drawer( child: Text("右侧侧边栏"), ), ); } } 效果图 ?...drawer: Drawer( child: Column( children: [ //头部...endDrawer: Drawer( child: Text("右侧侧边栏"), ), ); } } 效果图 ?
const 属性 appBar → PreferredSizeWidget 应用程序栏显示在展台的顶部....Appbar 一个Material Design应用程序栏。 ? 应用程序栏由工具栏和其它可能的部件(如TabBar和FlexibleSpaceBar)组成。...应用程序栏通常用在Scaffold.appBar属性中,该属性将应用程序栏作为固定高度的小部件放置在屏幕的顶部。...对于可滚动的应用程序栏,请参阅SliverAppBar,该应用程序将AppBar嵌入长条中以用于CustomScrollView。...SliverAppBar, 它使用AppBar提供一个灵活的应用程序栏,可以在CustomScrollView中使用.
, ), ), 复制代码 实际上就是给最外层套了一个Padding Scaffold,TabBar,底部导航 一个完整的路由页面可能会包含导航栏,抽屉菜单(Drawer) 以及底部 Tab 导航栏菜单等...:一个导航栏骨架 MyDrawer:抽屉菜单 BottomNavigationBar:底部导航栏 FloatingActionButton:漂浮按钮 AppBar Appbar 是一个 Material...风格的导航栏,通过他可以设置标题,导航栏菜单,导航底部tab等 AppBar({ Key key, this.leading, //导航栏最左侧Widget,常见为抽屉菜单按钮或返回按钮。...如果想要自定义菜单图标,可以手动设置 leading。...可以移除 Drawer 默认的一些留白 底部 Tab 导航栏 我们可以通过 Scaffold 的 BottomNavigationBar 属性来设置底部导航,如上面的示例,我们通过 Material
一个导航栏骨架 MyDrawer 抽屉菜单 BottomNavigationBar 底部导航栏 FloatingActionButton 漂浮按钮 AppBar AppBar是一个Material风格的导航栏...下面我们看看AppBar的定义: AppBar({ Key key, this.leading, //导航栏最左侧Widget,常见为抽屉菜单按钮或返回按钮。...如果我们想自定义菜单图标,可以手动来设置leading,如: Scaffold( appBar: AppBar( title: Text("App Name"), leading:...Tab组件定义如下: Tab({ Key key, this.text, // 菜单文本 this.icon, // 菜单图标 this.child, // 自定义组件样式 }) Drawer...组件作为根节点,它实现了Material风格的菜单面板,MediaQuery.removePadding可以移除Drawer默认的一些留白(比如Drawer默认顶部会留和手机状态栏等高的留白),读者可以尝试传递不同的参数来看看实际效果
但是在Flutter中,我们利用Drawer组件就可以很轻松实现抽屉视图。 简而言之就是,新建一个Drawer组件,然后配置给Scaffold组件的drawer属性,这样就实现侧边栏抽屉视图了。...Scaffold( //左侧侧边栏 drawer: Drawer( child: Column( children: [...endDrawer: Drawer( child: Text("右侧侧边栏"), ), //配置顶部导航栏 appBar: AppBar(...关于上面代码,有以下几点需要说明: 1,通过配置Scaffold的drawer属性,我们可以实现左侧侧边栏;通过配置Scaffold的endDrawer属性,我们可以实现右侧侧边栏。...2,配置了Scaffold的drawer属性或者endDrawer属性之后,flutter会自动帮我们在顶部导航栏的左侧或者右侧加上一个按钮,如下图所示: ?
自述 应用布局 应用程序布局是一个样式,指令和组件系统,当它们一起使用时,可以提供材质外观和感知应用程序的层叠关系。 它根据材料规格提供应用栏,抽屉和导航样式。...仅使用锚标签,material-button内置自己的样式。...> 应用栏和抽屉交互 应用栏和抽屉协同工作,为应用程序提供全面的应用布局。...适用于延期内容。 Inputs: visible bool 抽屉的可见性。 Outputs: visibleChange Stream 抽屉的可见性发生变化时触发事件。...适用于延期内容。 Inputs: visible bool 抽屉的可见性。 isExpanded bool 当抽屉扩展到全屏时,“True”。
长按时的提示 this.elevation = 8.0, this.padding = const EdgeInsets.all(8.0), this.child, // 用于自定义按钮的内容...Key key, this.content}) : super(key: key); @override Widget build(BuildContext context) { // 仅展示传入的内容...翻译过来大概就是「给子部件和系统点击无效区域留有足够空间,比如状态栏和系统导航栏」,SafeArea 可以很好解决刘海屏覆盖页面内容的问题,那么到目前为止,AppBar 的一些坑就说的差不多了,就要解决剩下的坑了...Scaffold - Drawer drawer 同 endDrawer 属性是一样的,除了滑动的方向,Drawer 这个组件也相对比较简单,只要传入一个 child 即可,在展示之前,先对 appBar...drawer: Drawer( // 记得要先添加 `SafeArea` 防止视图顶到状态栏下面 child: SafeArea( child:
定义主题有两种方式:应用程序范围或使用Theme小部件来定义应用程序特定部分的颜色和字体样式。事实上,应用程序范围的主题只是由MaterialApp在应用程序根部创建的主题小部件!...部分应用程序的主题 如果我们想在我们的应用程序的一部分中覆盖应用程序范围的主题,我们可以将我们的应用程序的一部分包装在Theme小部件中。...使用自定义字体 虽然Android和iOS提供高质量的系统字体,但设计师最常见的要求之一是使用自定义字体! 例如,我们可能会从我们的设计人员那里获得一个定制的字体,或者从谷歌字体中下载一种字体。...Flutter使用自定义字体开箱即用。 我们可以将字体应用到整个应用程序或个别小部件。...路线 创建一个Scaffold 添加一个Drawer 用条目填充Drawer 以编程方式关闭Drawer 1.创建一个Scaffold 为了将Drawer添加到我们的应用程序中,我们需要将其包装在Scaffold
**我们将实现一个可折叠的侧边栏演示程序,并在flutter应用程序中使用foldable_sidebar包创建一个可折叠的侧边栏导航抽屉。...foldable_sidebar 地址:https://pub.dev/packages/foldable_sidebar 可折叠边栏 这是一个易于使用的软件包,用于向Flutter应用程序添加可折叠的...利用Material Design的移动应用程序有两个必不可少的导航选择。这些导航是“选项卡和抽屉”。抽屉是选项卡的一种可选选择,因为有时移动应用程序没有足够的空间来帮助选项卡。 抽屉是不可见的侧屏。...它是一个向左滑动的菜单,在大多数情况下,它包含应用程序中的重要连接,并且在显示时拥有一半的屏幕。 该演示视频展示了如何在Flutter中创建可折叠的侧边栏。...它显示了在flutter应用程序中使用foldable_sidebar包可折叠的侧边栏将如何工作。它显示了当用户点击浮动操作按钮时,抽屉将以折叠方式显示/隐藏。它会显示在您的设备上。
二、讲解(后附源码) 1.这里主要是用户AppBar组件 /** AppBar({ Key key, this.leading,//在标题前面显示的一个控件,在首页通常显示应用的...用来在 Toolbar 标题下面显示一个 Tab 导航栏 this.elevation = 4.0,//纸墨设计中控件的 z 坐标顺序,默认值为 4,对于可滚动的 SliverAppBar,当...this.toolbarOpacity = 1.0, this.bottomOpacity = 1.0, }) */ 2.leading默认是一个返回箭头,有时候我们需要定义,有时候也仅是简单的返回上一层,就需要自定义了...如果leading属性未设置,且Scaffold设置了Drawer则显示打开Drawer的图标 如果leading属性未设置,Scaffold也未设置Drawer,此时如果有前一个路由,则显示BackButton...), onPressed: () { print('返回'); }, ), //自定义返回图标样式
TestApp()是一个自定义的组件. 直接上手代码解释吧!...Scaffold组件 Scaffold:通常我们是在MaterialApp中的home对应着Scaffold组件,它是Material Design布局结构的基本实现,此类提供了用于显示的drawer...、snackbar和底部sheet的API 常用属性为: appBar:显示在界面顶部的一个AppBar body:当前界面所需要显示的主要内容Widget drawer:抽屉菜单组件 小练习...theme: ThemeData( primarySwatch: Colors.yellow //表示主题颜色 ), home: Scaffold( appBar...: AppBar( //设置标题栏 title: Text('Flutter Demo'), ), body:HomeContent()
一、老套路,先看样式 右侧图是我的实际开发中业务界面,用作展示而已 二、讲解(后附源码) 1.这里主要是用户AppBar组件 /** AppBar({ Key key, this.leading...用来在 Toolbar 标题下面显示一个 Tab 导航栏 this.elevation = 4.0,//纸墨设计中控件的 z 坐标顺序,默认值为 4,对于可滚动的 SliverAppBar,当...this.toolbarOpacity = 1.0, this.bottomOpacity = 1.0, }) */ 2.leading默认是一个返回箭头,有时候我们需要定义,有时候也仅是简单的返回上一层,就需要自定义了...如果leading属性未设置,且Scaffold设置了Drawer则显示打开Drawer的图标 如果leading属性未设置,Scaffold也未设置Drawer,此时如果有前一个路由,则显示BackButton...), onPressed: () { print('返回'); }, ), //自定义返回图标样式
IconButton、ButtonBar、自定义按钮组件 IconButton这个组件一般是用在定义顶部导航栏上的按钮: appBar: AppBar( centerTitle...: true, title: Text("用户中心"), //定义顶部导航栏的左侧按钮 leading: IconButton( icon...: AppBar( ... ), body: Column( ... ), ); 效果如下: ?...drawer: Drawer( ...... ), //右侧侧边栏 endDrawer: Drawer( child:...Text("右侧侧边栏"), ), //floatingActionButton floatingActionButton: Container(
在本文中,我们将创建一个简单的应用来演示怎么实现一个 drawer 挂件和怎么根据我们的设计来自定义 drawer。 让我们着手写代码来实现 Flutter 中的 drawer 挂件。...runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); // 这个挂件是我们应用程序的根...return Scaffold( appBar: AppBar(), drawer: // 这里接下里会添加一个 Drawer ); 添加一个 Drawer 现在,我们将添加一个 drawer...(的页面),如下: 自定义 Drawer 现在,我们为 Drawer 添加些功能,正如我们说的,导航到新页面和自定义它的 UI。...我们最终自定义的 drawer 如下。文末会展示完整的代码。 Drawer Header 我们为 drawer 自定义头部,在这里我们将展示用户信息,并且点击它的话会跳转到个人页面。
Scaffold(脚手架) 5.1 Scaffold介绍 一个完整的路由页可能会包含导航栏、抽屉菜单(Drawer)以及底部 Tab 导航菜单等。...导航栏 drawer 抽屉菜单 bottomNavigationBar 底部导航栏 floatingActionButton 浮动按钮 5.2 AppBar AppBar是一个Material...下面我们看看AppBar的定义: AppBar({ Key? key, this.leading, //导航栏最左侧Widget,常见为抽屉菜单按钮或返回按钮。...若想自定义菜单图标,则可以手动设置AppBar的Leading属性。...下面的Drawer是一个简单实现: drawer: Drawer( child: Column( children: [ Padding(padding: EdgeInsets.only
Flutter工程的基本架构 首先看这段代码: import 'package:flutter/material.dart'; void main() => runApp(MyApp()); //自定义组件...: AppBar( title: Text('为人民服务!')...MaterialApp是一个方便的Widget,是用于构建Material设计风格应用的组件封装框架,它封装了应用程序级别的一些Widget。一般作为顶层Widget来使用。...此类提供了用于显示drawer、snackbar和底部sheet的API。...Scaffold有下面几个主要属性: appBar,显示在界面顶部的一个AppBar,即页面的导航栏 body,当前界面所显示主要内容的widget drawer,抽屉菜单控件 以上。
textDirection: TextDirection.ltr, ), )); } 实际的项目中一般比较大,为了代码的可维护性,我们会把 runApp() 里的内容单独抽离成一个自定义的组件...在 Flutter 中自定义组件其实就是一个类,这个类需要继承 StatelessWidget/StatefulWidget。...255, 100, 0.5) ), ) ); } } MaterialApp 是一个方便的 Widget,它封装了应用程序实现...home 主页 2. title 标题 3. color 颜色 4. theme 主题 5. routes 路由 Scaffold 是 Material Design 布局结构的基本实现,它提供了用于显示 drawer...该组件主要的属性如下: 1. appBar 显示在界面顶部的一个 AppBar。 2. body 当前界面所显示的主要内容 Widget。 3. drawer 抽屉菜单控件。
领取专属 10元无门槛券
手把手带您无忧上云