Material Design App Bar Height
A material design app bar.
An app bar consists of a toolbar and potentially other widgets, such as a TabBar and a FlexibleSpaceBar. App bars typically expose one or more common actions with IconButtons which are optionally followed by a PopupMenuButton for less common operations (sometimes called the "overflow menu").
App bars are typically used in the Scaffold.appBar property, which places the app bar as a fixed-height widget at the top of the screen. For a scrollable app bar, see SliverAppBar, which embeds an AppBar in a sliver for use in a CustomScrollView.
The AppBar displays the toolbar widgets, leading, title, and actions, above the bottom (if any). The bottom is usually used for a TabBar. If a flexibleSpace widget is specified then it is stacked behind the toolbar and the bottom widget. The following diagram shows where each of these slots appears in the toolbar when the writing language is left-to-right (e.g. English):
The AppBar insets its content based on the ambient MediaQuery's padding, to avoid system UI intrusions. It's taken care of by Scaffold when used in the Scaffold.appBar property. When animating an AppBar, unexpected MediaQuery changes (as is common in Hero animations) may cause the content to suddenly jump. Wrap the AppBar in a MediaQuery widget, and adjust its padding such that the animation is smooth.
If the leading widget is omitted, but the AppBar is in a Scaffold with a Drawer, then a button will be inserted to open the drawer. Otherwise, if the nearest Navigator has any previous routes, a BackButton is inserted instead. This behavior can be turned off by setting the automaticallyImplyLeading to false. In that case a null leading widget will result in the middle/title widget stretching to start.
This sample shows an AppBar with two simple actions. The first action opens a SnackBar, while the second action navigates to a new page.
To create a local project with this code sample, run:
flutter create --sample=material.AppBar.1 mysample
Troubleshooting
Why don't my TextButton actions appear?
If the app bar's actions contains TextButtons, they will not be visible if their foreground (text) color is the same as the the app bar's background color.
The default app bar backgroundColor is the overall theme's ColorScheme.primary if the overall theme's brightness is Brightness.light. Unfortunately this is the same as the default ButtonStyle.foregroundColor for TextButton for light themes. In this case a preferable text button foreground color is ColorScheme.onPrimary, a color that contrasts nicely with ColorScheme.primary. to remedy the problem, override TextButton.style:
To create a local project with this code sample, run:
flutter create --sample=material.AppBar.2 mysample
See also:
- Scaffold, which displays the AppBar in its Scaffold.appBar slot.
- SliverAppBar, which uses AppBar to provide a flexible app bar that can be used in a CustomScrollView.
- TabBar, which is typically placed in the bottom slot of the AppBar if the screen has multiple pages arranged in tabs.
- IconButton, which is used with actions to show buttons on the app bar.
- PopupMenuButton, to show a popup menu on the app bar, via actions.
- FlexibleSpaceBar, which is used with flexibleSpace when the app bar can expand and collapse.
- material.io/design/components/app-bars-top.html
- Cookbook: Place a floating app bar above a list
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- AppBar
- Implemented types
-
- PreferredSizeWidget
Constructors
- AppBar ({Key? key, Widget? leading, bool automaticallyImplyLeading, Widget? title, List<
Widget> ? actions, Widget? flexibleSpace, PreferredSizeWidget? bottom, double? elevation, Color? shadowColor, ShapeBorder? shape, Color? backgroundColor, Color? foregroundColor, @Deprecated('This property is no longer used, please use systemOverlayStyle instead. ' 'This feature was deprecated after v2.4.0-0.0.pre.') Brightness? brightness, IconThemeData? iconTheme, IconThemeData? actionsIconTheme, @Deprecated('This property is no longer used, please use toolbarTextStyle and titleTextStyle instead. ' 'This feature was deprecated after v2.4.0-0.0.pre.') TextTheme? textTheme, bool primary, bool? centerTitle, double? titleSpacing, double toolbarOpacity, double bottomOpacity, double? toolbarHeight, double? leadingWidth, @Deprecated('This property is obsolete and is false by default. ' 'This feature was deprecated after v2.4.0-0.0.pre.') bool? backwardsCompatibility, TextStyle? toolbarTextStyle, TextStyle? titleTextStyle, SystemUiOverlayStyle? systemOverlayStyle}) - Creates a material design app bar. [...]
Properties
- actions → List<
Widget> ? - A list of Widgets to display in a row after the title widget. [...]
final
- actionsIconTheme → IconThemeData?
- The color, opacity, and size to use for the icons that appear in the app bar's actions. [...]
final
- automaticallyImplyLeading → bool
- Controls whether we should try to imply the leading widget if null. [...]
final
- backgroundColor → Color?
- The fill color to use for an app bar's Material. [...]
final
- backwardsCompatibility → bool?
- This property is deprecated and is false by default. [...]
@Deprecated('This property is obsolete and is false by default. ' 'This feature was deprecated after v2.4.0-0.0.pre.'), final
- bottom → PreferredSizeWidget?
- This widget appears across the bottom of the app bar. [...]
final
- bottomOpacity → double
- How opaque the bottom part of the app bar is. [...]
final
- brightness → Brightness?
- This property is deprecated, please use systemOverlayStyle instead. [...]
@Deprecated('This property is no longer used, please use systemOverlayStyle instead. ' 'This feature was deprecated after v2.4.0-0.0.pre.'), final
- centerTitle → bool?
- Whether the title should be centered. [...]
final
- elevation → double?
- The z-coordinate at which to place this app bar relative to its parent. [...]
final
- Whether the title should be wrapped with header Semantics. [...]
final
- flexibleSpace → Widget?
- This widget is stacked behind the toolbar and the tab bar. Its height will be the same as the app bar's overall height. [...]
final
- foregroundColor → Color?
- The default color for Text and Icons within the app bar. [...]
final
- hashCode → int
- The hash code for this object. [...]
- iconTheme → IconThemeData?
- The color, opacity, and size to use for toolbar icons. [...]
final
- key → Key?
- Controls how one widget replaces another widget in the tree. [...]
final, inherited
- leading → Widget?
- A widget to display before the toolbar's title. [...]
final
- leadingWidth → double?
- Defines the width of leading widget. [...]
final
- preferredSize → Size
- A size whose height is the sum of toolbarHeight and the bottom widget's preferred height. [...]
final
- primary → bool
- Whether this app bar is being displayed at the top of the screen. [...]
final
- runtimeType → Type
- A representation of the runtime type of the object.
read-only, inherited
- shadowColor → Color?
- The color of the shadow below the app bar. [...]
final
- shape → ShapeBorder?
- The shape of the app bar's Material as well as its shadow. [...]
final
- systemOverlayStyle → SystemUiOverlayStyle?
- Specifies the style to use for the system overlays that overlap the AppBar. [...]
final
- textTheme → TextTheme?
- This property is deprecated, please use toolbarTextStyle and titleTextStyle instead. [...]
@Deprecated('This property is no longer used, please use toolbarTextStyle and titleTextStyle instead. ' 'This feature was deprecated after v2.4.0-0.0.pre.'), final
- title → Widget?
- The primary widget displayed in the app bar. [...]
final
- titleSpacing → double?
- The spacing around title content on the horizontal axis. This spacing is applied even if there is no leading content or actions. If you want title to take all the space available, set this value to 0.0. [...]
final
- titleTextStyle → TextStyle?
- The default text style for the AppBar's title widget. [...]
final
- toolbarHeight → double?
- Defines the height of the toolbar component of an AppBar. [...]
final
- toolbarOpacity → double
- How opaque the toolbar part of the app bar is. [...]
final
- toolbarTextStyle → TextStyle?
- The default text style for the AppBar's leading, and actions widgets, but not its title. [...]
final
Methods
- createElement (
) → StatefulElement - Creates a StatefulElement to manage this widget's location in the tree. [...]
inherited
- createState (
) → State< AppBar> - Creates the mutable state for this widget at a given location in the tree. [...]
override
- debugDescribeChildren (
) → List< DiagnosticsNode> - Returns a list of
DiagnosticsNode
objects describing this node's children. [...] - debugFillProperties (
DiagnosticPropertiesBuilder properties ) → void - Add additional properties associated with the node. [...]
inherited
- noSuchMethod (
Invocation invocation ) → dynamic - Invoked when a non-existent method or property is accessed. [...]
inherited
- toDiagnosticsNode (
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode - Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep. [...]
inherited
- toString (
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String - A string representation of this object. [...]
inherited
- toStringDeep (
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String - Returns a string representation of this node and its descendants. [...]
inherited
- toStringShallow (
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String - Returns a one-line detailed description of the object. [...]
inherited
- toStringShort (
) → String - A short, textual description of this widget.
inherited
Operators
- operator == (
Object other ) → bool - The equality operator. [...]
Static Methods
- preferredHeightFor (
BuildContext context, Size preferredSize ) → double - Used by Scaffold to compute its AppBar's overall height. The returned value is the same
preferredSize.height
unless AppBar.toolbarHeight was null andAppBarTheme.of(context).toolbarHeight
is non-null. In that case the return value is the sum of the theme's toolbar height and the height of the app bar's AppBar.bottom widget.
Material Design App Bar Height
Source: https://api.flutter.dev/flutter/material/AppBar-class.html
Posted by: joneshany1989.blogspot.com
0 Response to "Material Design App Bar Height"
Post a Comment