Commit ede5dfce authored by Adam Barth's avatar Adam Barth

[rename fixit] ToolBar -> AppBar

* left -> leading (Removes an LTR bias)
* center -> title (Widget was actually centered)
* right -> actions (Removes an LTR bias, asymmetric with leading)

Fixes #2348
parent e48c822c
......@@ -272,9 +272,9 @@ class CardCollectionState extends State<CardCollection> {
);
}
Widget _buildToolBar(BuildContext context) {
return new ToolBar(
right: <Widget>[
Widget _buildAppBar(BuildContext context) {
return new AppBar(
actions: <Widget>[
new Text(_dismissDirectionText(_dismissDirection))
],
flexibleSpace: (_) {
......@@ -451,7 +451,7 @@ class CardCollectionState extends State<CardCollection> {
primarySwatch: _primaryColor
),
child: new Scaffold(
toolBar: _buildToolBar(context),
appBar: _buildAppBar(context),
drawer: _buildDrawer(),
body: body
)
......
......@@ -223,8 +223,8 @@ class DragAndDropAppState extends State<DragAndDropApp> {
}
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text('Drag and Drop Flutter Demo')
appBar: new AppBar(
title: new Text('Drag and Drop Flutter Demo')
),
body: new Column(
children: <Widget>[
......
......@@ -154,7 +154,7 @@ class OverlayGeometryAppState extends State<OverlayGeometryApp> {
Widget build(BuildContext context) {
List<Widget> layers = <Widget>[
new Scaffold(
toolBar: new ToolBar(center: new Text('Tap a Card')),
appBar: new AppBar(title: new Text('Tap a Card')),
body: new Container(
padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 8.0),
child: new ScrollableMixedWidgetList(
......
......@@ -105,10 +105,10 @@ class PageableListAppState extends State<PageableListApp> {
);
}
Widget _buildToolBar() {
return new ToolBar(
center: new Text('PageableList'),
right: <Widget>[
Widget _buildAppBar() {
return new AppBar(
title: new Text('PageableList'),
actions: <Widget>[
new Text(scrollDirection == Axis.horizontal ? "horizontal" : "vertical")
]
);
......@@ -126,7 +126,7 @@ class PageableListAppState extends State<PageableListApp> {
return new IconTheme(
data: const IconThemeData(color: Colors.white),
child: new Scaffold(
toolBar: _buildToolBar(),
appBar: _buildAppBar(),
drawer: _buildDrawer(),
body: _buildBody(context)
)
......
......@@ -15,8 +15,8 @@ void main() {
routes: <String, WidgetBuilder>{
'/': (BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text("Hardware Key Demo")
appBar: new AppBar(
title: new Text("Hardware Key Demo")
),
body: new Material(
child: new RawKeyboardDemo(
......
......@@ -217,8 +217,8 @@ void main() {
routes: <String, WidgetBuilder>{
'/': (BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text('Gestures Demo')),
appBar: new AppBar(
title: new Text('Gestures Demo')),
body: new GestureDemo()
);
}
......
......@@ -100,8 +100,8 @@ void main() {
routes: <String, WidgetBuilder>{
'/': (BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text('Media Query Example')
appBar: new AppBar(
title: new Text('Media Query Example')
),
body: new Material(child: new AdaptiveContainer(names: _kNames))
);
......
......@@ -154,8 +154,8 @@ class SectorAppState extends State<SectorApp> {
routes: <String, WidgetBuilder>{
'/': (BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text('Sector Layout in a Widget Tree')
appBar: new AppBar(
title: new Text('Sector Layout in a Widget Tree')
),
body: buildBody()
);
......
......@@ -121,8 +121,8 @@ void main() {
routes: <String, WidgetBuilder>{
'/': (BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text('Hal and Dave')),
appBar: new AppBar(
title: new Text('Hal and Dave')),
body: new Material(
color: Colors.grey[50],
child: new StyledTextDemo()
......
......@@ -196,8 +196,8 @@ class _ButtonsDemoState extends State<ButtonsDemo> {
return new TabBarSelection<_ButtonDemo>(
values: demos,
child: new Scaffold(
toolBar: new ToolBar(
center: new Text("Buttons"),
appBar: new AppBar(
title: new Text("Buttons"),
tabBar: new TabBar<_ButtonDemo>(
isScrollable: true,
labels: new Map<_ButtonDemo, TabLabel>.fromIterable(demos, value: (_ButtonDemo demo) => demo.tabLabel)
......
......@@ -117,8 +117,8 @@ class TravelDestinationItem extends StatelessWidget {
class CardsDemo extends StatelessWidget {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text("Travel Stream")
appBar: new AppBar(
title: new Text("Travel Stream")
),
body: new Block(
padding: const EdgeInsets.only(top: 8.0, left: 8.0, right: 8.0),
......
......@@ -36,7 +36,7 @@ class _ChipDemoState extends State<ChipDemo> {
}
return new Scaffold(
toolBar: new ToolBar(center: new Text("Chips")),
appBar: new AppBar(title: new Text("Chips")),
body: new Block(
children: chips.map((Widget widget) {
return new Container(
......
......@@ -111,9 +111,9 @@ class ColorsDemo extends StatelessWidget {
return new TabBarSelection<ColorSwatch>(
values: colorSwatches,
child: new Scaffold(
toolBar: new ToolBar(
appBar: new AppBar(
elevation: 0,
center: new Text("Colors"),
title: new Text("Colors"),
tabBar: new TabBar<ColorSwatch>(
isScrollable: true,
labels: new Map<ColorSwatch, TabLabel>.fromIterable(colorSwatches, value: (ColorSwatch swatch) {
......
......@@ -31,7 +31,7 @@ class _DatePickerDemoState extends State<DatePickerDemo> {
Widget build(BuildContext context) {
return
new Scaffold(
toolBar: new ToolBar(center: new Text("Date Picker")),
appBar: new AppBar(title: new Text("Date Picker")),
body: new Column(
children: <Widget>[
new Text(new DateFormat.yMMMd().format(_selectedDate)),
......
......@@ -80,8 +80,8 @@ class DialogDemoState extends State<DialogDemo> {
return new Scaffold(
key: scaffoldKey,
toolBar: new ToolBar(
center: new Text('Dialogs')
appBar: new AppBar(
title: new Text('Dialogs')
),
body: new Block(
padding: const EdgeInsets.symmetric(vertical: 24.0, horizontal: 72.0),
......
......@@ -20,7 +20,7 @@ class _DropDownDemoState extends State<DropDownDemo> {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(center: new Text("Dropdown Button")),
appBar: new AppBar(title: new Text("Dropdown Button")),
body: new Center(
child: new DropDownButton<String>(
items: buildItems(),
......
......@@ -18,8 +18,8 @@ class FitnessDemo extends StatelessWidget {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text("Fitness")
appBar: new AppBar(
title: new Text("Fitness")
),
body: new _FitnessDemoContents()
);
......
......@@ -85,8 +85,8 @@ class FlexibleSpaceDemoState extends State<FlexibleSpaceDemo> {
appBarHeight: appBarHeight,
scrollableKey: scrollableKey,
appBarBehavior: AppBarBehavior.scroll,
toolBar: new ToolBar(
right: <Widget>[
appBar: new AppBar(
actions: <Widget>[
new IconButton(
icon: Icons.create,
tooltip: 'Search'
......
......@@ -141,13 +141,13 @@ class FullScreenDialogDemoState extends State<FullScreenDialogDemo> {
final ThemeData theme = Theme.of(context);
return new Scaffold(
toolBar: new ToolBar(
left: new IconButton(
appBar: new AppBar(
leading: new IconButton(
icon: Icons.clear,
onPressed: () { handleDismissButton(context); }
),
center: new Text('New Event'),
right: <Widget> [
title: new Text('New Event'),
actions: <Widget> [
new FlatButton(
child: new Text('SAVE', style: theme.textTheme.body1.copyWith(color: Colors.white)),
onPressed: () {
......
......@@ -41,8 +41,8 @@ class GridDemoPhotoItem extends StatelessWidget {
Navigator.push(context, new MaterialPageRoute<Null>(
builder: (BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text(photo.title)
appBar: new AppBar(
title: new Text(photo.title)
),
body: new Material(
child: new AssetImage(
......@@ -172,9 +172,9 @@ class GridListDemoState extends State<GridListDemo> {
Widget build(BuildContext context) {
final Orientation orientation = MediaQuery.of(context).orientation;
return new Scaffold(
toolBar: new ToolBar(
center: new Text('Grid List'),
right: <Widget>[
appBar: new AppBar(
title: new Text('Grid List'),
actions: <Widget>[
new IconButton(
icon: Icons.more_vert,
onPressed: () { showTileStyleMenu(context); },
......
......@@ -66,8 +66,8 @@ class IconsDemoState extends State<IconsDemo> {
final TextStyle textStyle = theme.textTheme.subhead.copyWith(color: theme.textTheme.caption.color);
return new Scaffold(
toolBar: new ToolBar(
center: new Text('Icons')
appBar: new AppBar(
title: new Text('Icons')
),
body: new IconTheme(
data: new IconThemeData(opacity: iconOpacity),
......
......@@ -125,9 +125,9 @@ class LeaveBehindDemoState extends State<LeaveBehindDemo> {
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
toolBar: new ToolBar(
center: new Text('Swipe Items to Dismiss'),
right: <Widget>[
appBar: new AppBar(
title: new Text('Swipe Items to Dismiss'),
actions: <Widget>[
new PopupMenuButton<LeaveBehindDemoAction>(
onSelected: handleDemoAction,
items: <PopupMenuEntry<LeaveBehindDemoAction>>[
......
......@@ -174,9 +174,9 @@ class ListDemoState extends State<ListDemo> {
return new Scaffold(
key: scaffoldKey,
toolBar: new ToolBar(
center: new Text('Scrolling List\n$itemSizeText$layoutText'),
right: <Widget>[
appBar: new AppBar(
title: new Text('Scrolling List\n$itemSizeText$layoutText'),
actions: <Widget>[
new IconButton(
icon: Icons.sort_by_alpha,
tooltip: 'Sort',
......
......@@ -56,15 +56,15 @@ class MenuDemoState extends State<MenuDemo> {
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
toolBar: new ToolBar(
center: new Text('Menus'),
right: <Widget>[
appBar: new AppBar(
title: new Text('Menus'),
actions: <Widget>[
new PopupMenuButton<String>(
onSelected: showMenuSelection,
items: <PopupMenuItem<String>>[
new PopupMenuItem<String>(
value: 'ToolBar Menu',
child: new Text('ToolBar Menu')
value: 'AppBar Menu',
child: new Text('AppBar Menu')
),
new PopupMenuItem<String>(
value: 'Right Here',
......
......@@ -13,7 +13,7 @@ class ModalBottomSheetDemo extends StatelessWidget {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(center: new Text("Modal Bottom Sheet")),
appBar: new AppBar(title: new Text("Modal Bottom Sheet")),
body: new Center(
child: new Container(
width: 200.0,
......
......@@ -23,7 +23,7 @@ class PageSelectorDemo extends StatelessWidget {
];
return new Scaffold(
toolBar: new ToolBar(center: new Text('Page Selector')),
appBar: new AppBar(title: new Text('Page Selector')),
body: new TabBarSelection<IconData>(
values: icons,
child: new Builder(
......
......@@ -28,7 +28,7 @@ class PersistentBottomSheetDemo extends StatelessWidget {
Widget build(BuildContext notUsed) { // Can't find the Scaffold from this context.
return new Scaffold(
toolBar: new ToolBar(center: new Text("Persistent Bottom Sheet")),
appBar: new AppBar(title: new Text("Persistent Bottom Sheet")),
floatingActionButton: new FloatingActionButton(
child: new Icon(icon: Icons.add),
backgroundColor: Colors.redAccent[200]
......
......@@ -83,7 +83,7 @@ class _ProgressIndicatorDemoState extends State<ProgressIndicatorDemo> {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(center: new Text('Progress Indicators')),
appBar: new AppBar(title: new Text('Progress Indicators')),
body: new DefaultTextStyle(
style: Theme.of(context).textTheme.title,
child: new GestureDetector(
......
......@@ -48,8 +48,8 @@ class _StatusBarGraphic extends _BarGraphic {
);
}
class _ToolBarGraphic extends _BarGraphic {
_ToolBarGraphic() : super(
class _AppBarGraphic extends _BarGraphic {
_AppBarGraphic() : super(
height: 48.0,
color: Colors.blue[400],
leftText: 'Tool Bar',
......@@ -113,7 +113,7 @@ const String _introText =
class ScrollingTechniquesDemo extends StatelessWidget {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(center: new Text('Scrolling Techniques')),
appBar: new AppBar(title: new Text('Scrolling Techniques')),
body: new Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: new Block(
......@@ -127,7 +127,7 @@ class ScrollingTechniquesDemo extends StatelessWidget {
titleText: 'Standard',
barGraphics: <Widget>[
new _StatusBarGraphic(),
new _ToolBarGraphic()
new _AppBarGraphic()
]
),
new _TechniqueItem(
......@@ -135,7 +135,7 @@ class ScrollingTechniquesDemo extends StatelessWidget {
builder: (BuildContext context) => new FlexibleSpaceDemo(),
barGraphics: <Widget>[
new _StatusBarGraphic(),
new _ToolBarGraphic(),
new _AppBarGraphic(),
new _TabBarGraphic()
]
),
......@@ -144,7 +144,7 @@ class ScrollingTechniquesDemo extends StatelessWidget {
builder: (BuildContext context) => new FlexibleSpaceDemo(),
barGraphics: <Widget>[
new _StatusBarGraphic(),
new _ToolBarGraphic(),
new _AppBarGraphic(),
new _FlexibleSpaceGraphic()
]
)
......
......@@ -13,7 +13,7 @@ class _SliderDemoState extends State<SliderDemo> {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(center: new Text("Sliders")),
appBar: new AppBar(title: new Text("Sliders")),
body: new Block(children: <Widget>[
new Container(
height: 100.0,
......
......@@ -58,8 +58,8 @@ class SnackBarDemo extends StatelessWidget {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text('SnackBar')
appBar: new AppBar(
title: new Text('SnackBar')
),
body: new Builder(
// Create an inner BuildContext so that the snackBar onPressed methods
......
......@@ -28,8 +28,8 @@ class TabsDemo extends StatelessWidget {
return new TabBarSelection<IconData>(
values: icons,
child: new Scaffold(
toolBar: new ToolBar(
center: new Text("Scrollable Tabs"),
appBar: new AppBar(
title: new Text("Scrollable Tabs"),
tabBar: new TabBar<IconData>(
isScrollable: true,
labels: new Map<IconData, TabLabel>.fromIterable(
......
......@@ -94,8 +94,8 @@ class _TabsFabDemoState extends State<TabsFabDemo> {
onChanged: _handleTabSelection,
child: new Scaffold(
key: scaffoldKey,
toolBar: new ToolBar(
center: new Text("FAB per Tab"),
appBar: new AppBar(
title: new Text("FAB per Tab"),
tabBar: new TabBar<_Page>(
labels: new Map<_Page, TabLabel>.fromIterable(pages, value: (_Page page) => page.tabLabel)
)
......
......@@ -62,8 +62,8 @@ class TextFieldDemoState extends State<TextFieldDemo> {
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
toolBar: new ToolBar(
center: new Text('Text Fields')
appBar: new AppBar(
title: new Text('Text Fields')
),
body: new Block(
padding: const EdgeInsets.all(8.0),
......
......@@ -27,7 +27,7 @@ class _TimePickerDemoState extends State<TimePickerDemo> {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(center: new Text("Time Picker")),
appBar: new AppBar(title: new Text("Time Picker")),
body: new Column(
children: <Widget>[
new Text('$_selectedTime'),
......
......@@ -33,7 +33,7 @@ class _ToggleControlsDemoState extends State<ToggleControlsDemo> {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(center: new Text("Selection Controls")),
appBar: new AppBar(title: new Text("Selection Controls")),
body: new Column(
children: <Widget>[
new Row(
......
......@@ -13,8 +13,8 @@ class TooltipDemo extends StatelessWidget {
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
return new Scaffold(
toolBar: new ToolBar(
center: new Text('Tooltip')
appBar: new AppBar(
title: new Text('Tooltip')
),
body: new Builder(
builder: (BuildContext context) {
......
......@@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
class TwoLevelListDemo extends StatelessWidget {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(center: new Text('Expand/Collapse List Control')),
appBar: new AppBar(title: new Text('Expand/Collapse List Control')),
body: new Padding(
padding: const EdgeInsets.all(0.0),
child: new TwoLevelList(
......
......@@ -62,7 +62,7 @@ class TypographyDemo extends StatelessWidget {
}
return new Scaffold(
toolBar: new ToolBar(center: new Text('Typography')),
appBar: new AppBar(title: new Text('Typography')),
body: new Block(children: styleItems)
);
}
......
......@@ -61,8 +61,8 @@ class _WeatherDemoState extends State<WeatherDemo> {
Widget build(BuildContext context) {
if (!assetsLoaded) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text("Weather")
appBar: new AppBar(
title: new Text("Weather")
),
body: new Container(
decoration: new BoxDecoration(
......@@ -73,8 +73,8 @@ class _WeatherDemoState extends State<WeatherDemo> {
}
return new Scaffold(
toolBar: new ToolBar(
center: new Text("Weather")
appBar: new AppBar(
title: new Text("Weather")
),
body: new Material(
child: new Stack(
......
......@@ -50,7 +50,7 @@ class GalleryHomeState extends State<GalleryHome> {
return new Scaffold(
appBarHeight: 128.0,
drawer: new GalleryDrawer(),
toolBar: new ToolBar(
appBar: new AppBar(
flexibleSpace: (BuildContext context) {
return new Container(
padding: const EdgeInsets.only(left: 16.0, bottom: 24.0),
......
......@@ -39,7 +39,7 @@ class GallerySection extends StatelessWidget {
appBarHeight: appBarHeight,
appBarBehavior: AppBarBehavior.scroll,
scrollableKey: scrollableKey,
toolBar: new ToolBar(
appBar: new AppBar(
flexibleSpace: (BuildContext context) => new FlexibleSpaceBar(title: new Text(title))
),
body: new Material(
......
......@@ -206,11 +206,11 @@ class StockHomeState extends State<StockHome> {
Navigator.popAndPushNamed(context, '/settings');
}
Widget buildToolBar() {
return new ToolBar(
Widget buildAppBar() {
return new AppBar(
elevation: 0,
center: new Text(StockStrings.of(context).title()),
right: <Widget>[
title: new Text(StockStrings.of(context).title()),
actions: <Widget>[
new IconButton(
icon: Icons.search,
onPressed: _handleSearchBegin,
......@@ -303,14 +303,14 @@ class StockHomeState extends State<StockHome> {
// TODO(abarth): Should we factor this into a SearchBar in the framework?
Widget buildSearchBar() {
return new ToolBar(
left: new IconButton(
return new AppBar(
leading: new IconButton(
icon: Icons.arrow_back,
color: Theme.of(context).accentColor,
onPressed: _handleSearchEnd,
tooltip: 'Back'
),
center: new Input(
title: new Input(
value: _searchQuery,
autofocus: true,
hintText: 'Search stocks',
......@@ -341,7 +341,7 @@ class StockHomeState extends State<StockHome> {
values: <StockHomeTab>[StockHomeTab.market, StockHomeTab.portfolio],
child: new Scaffold(
key: _scaffoldKey,
toolBar: _isSearching ? buildSearchBar() : buildToolBar(),
appBar: _isSearching ? buildSearchBar() : buildAppBar(),
floatingActionButton: buildFloatingActionButton(),
drawer: _buildDrawer(context),
body: new TabBarView<StockHomeTab>(
......
......@@ -94,9 +94,9 @@ class StockSettingsState extends State<StockSettings> {
config.updater(value);
}
Widget buildToolBar(BuildContext context) {
return new ToolBar(
center: new Text('Settings')
Widget buildAppBar(BuildContext context) {
return new AppBar(
title: new Text('Settings')
);
}
......@@ -247,7 +247,7 @@ class StockSettingsState extends State<StockSettings> {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: buildToolBar(context),
appBar: buildAppBar(context),
body: buildSettingsPane(context)
);
}
......
......@@ -73,8 +73,8 @@ class StockSymbolPage extends StatelessWidget {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text(stock.name)
appBar: new AppBar(
title: new Text(stock.name)
),
body: new Block(
children: <Widget>[
......
......@@ -8,6 +8,7 @@
library material;
export 'src/material/app.dart';
export 'src/material/app_bar.dart';
export 'src/material/bottom_sheet.dart';
export 'src/material/button.dart';
export 'src/material/card.dart';
......@@ -56,7 +57,6 @@ export 'src/material/theme_data.dart';
export 'src/material/time_picker.dart';
export 'src/material/time_picker_dialog.dart';
export 'src/material/toggleable.dart';
export 'src/material/tool_bar.dart';
export 'src/material/tooltip.dart';
export 'src/material/two_level_list.dart';
export 'src/material/typography.dart';
......
......@@ -11,12 +11,12 @@ import 'material.dart';
import 'theme.dart';
import 'typography.dart';
class ToolBar extends StatelessWidget {
ToolBar({
class AppBar extends StatelessWidget {
AppBar({
Key key,
this.left,
this.center,
this.right,
this.leading,
this.title,
this.actions,
this.flexibleSpace,
this.foregroundOpacity: 1.0,
this.tabBar,
......@@ -29,9 +29,9 @@ class ToolBar extends StatelessWidget {
assert((tabBar != null) ? flexibleSpace == null : true);
}
final Widget left;
final Widget center;
final List<Widget> right;
final Widget leading;
final Widget title;
final List<Widget> actions;
final WidgetBuilder flexibleSpace;
final double foregroundOpacity;
final Widget tabBar;
......@@ -40,7 +40,7 @@ class ToolBar extends StatelessWidget {
final TextTheme textTheme;
final EdgeInsets padding;
ToolBar copyWith({
AppBar copyWith({
Key key,
Widget left,
Widget center,
......@@ -52,11 +52,11 @@ class ToolBar extends StatelessWidget {
TextTheme textTheme,
EdgeInsets padding
}) {
return new ToolBar(
return new AppBar(
key: key ?? this.key,
left: left ?? this.left,
center: center ?? this.center,
right: right ?? this.right,
leading: left ?? this.leading,
title: center ?? this.title,
actions: right ?? this.actions,
flexibleSpace: flexibleSpace ?? this.flexibleSpace,
foregroundOpacity: foregroundOpacity ?? this.foregroundOpacity,
tabBar: tabBar ?? this.tabBar,
......@@ -98,18 +98,18 @@ class ToolBar extends StatelessWidget {
}
final List<Widget> toolBarRow = <Widget>[];
if (left != null)
toolBarRow.add(left);
if (leading != null)
toolBarRow.add(leading);
toolBarRow.add(
new Flexible(
child: new Padding(
padding: new EdgeInsets.only(left: 24.0),
child: center != null ? new DefaultTextStyle(style: centerStyle, child: center) : null
child: title != null ? new DefaultTextStyle(style: centerStyle, child: title) : null
)
)
);
if (right != null)
toolBarRow.addAll(right);
if (actions != null)
toolBarRow.addAll(actions);
EdgeInsets combinedPadding = new EdgeInsets.symmetric(horizontal: 8.0);
if (padding != null)
......@@ -117,7 +117,7 @@ class ToolBar extends StatelessWidget {
// If the toolBar's height shrinks below toolBarHeight, it will be clipped and bottom
// justified. This is so that the toolbar appears to move upwards as its height is reduced.
final double toolBarHeight = kToolBarHeight + combinedPadding.top + combinedPadding.bottom;
final double toolBarHeight = kAppBarHeight + combinedPadding.top + combinedPadding.bottom;
final Widget toolBar = new ConstrainedBox(
constraints: new BoxConstraints(maxHeight: toolBarHeight),
child: new Padding(
......
......@@ -9,8 +9,8 @@ import 'package:flutter/widgets.dart';
// Mobile Landscape: 48dp
// Mobile Portrait: 56dp
// Tablet/Desktop: 64dp
const double kToolBarHeight = 56.0;
const double kExtendedToolBarHeight = 128.0;
const double kAppBarHeight = 56.0;
const double kExtendedAppBarHeight = 128.0;
const double kTextTabBarHeight = 48.0;
const double kIconTabBarHeight = 48.0;
......
......@@ -27,7 +27,7 @@ class _FlexibleSpaceBarState extends State<FlexibleSpaceBar> {
final double appBarHeight = Scaffold.of(context).appBarHeight;
final Animation<double> animation = Scaffold.of(context).appBarAnimation;
final EdgeInsets toolBarPadding = MediaQuery.of(context)?.padding ?? EdgeInsets.zero;
final double toolBarHeight = kToolBarHeight + toolBarPadding.top;
final double toolBarHeight = kAppBarHeight + toolBarPadding.top;
final List<Widget> children = <Widget>[];
// background image
......@@ -63,7 +63,7 @@ class _FlexibleSpaceBarState extends State<FlexibleSpaceBar> {
color: titleStyle.color.withAlpha(new Tween<double>(begin: 255.0, end: 0.0).evaluate(opacityCurve).toInt())
);
final double yAlignStart = 1.0;
final double yAlignEnd = (toolBarPadding.top + kToolBarHeight / 2.0) / toolBarHeight;
final double yAlignEnd = (toolBarPadding.top + kAppBarHeight / 2.0) / toolBarHeight;
final double scaleAndAlignEnd = (appBarHeight - toolBarHeight) / appBarHeight;
final CurvedAnimation scaleAndAlignCurve = new CurvedAnimation(
parent: animation,
......
......@@ -8,6 +8,7 @@ import 'dart:math' as math;
import 'package:flutter/widgets.dart';
import 'app_bar.dart';
import 'bottom_sheet.dart';
import 'constants.dart';
import 'drawer.dart';
......@@ -15,7 +16,6 @@ import 'icons.dart';
import 'icon_button.dart';
import 'material.dart';
import 'snack_bar.dart';
import 'tool_bar.dart';
const double _kFloatingActionButtonMargin = 16.0; // TODO(hmuller): should be device dependent
const Duration _kFloatingActionButtonSegue = const Duration(milliseconds: 400);
......@@ -27,7 +27,7 @@ enum AppBarBehavior {
enum _ScaffoldSlot {
body,
toolBar,
appBar,
bottomSheet,
snackBar,
floatingActionButton,
......@@ -42,18 +42,18 @@ class _ScaffoldLayout extends MultiChildLayoutDelegate {
void performLayout(Size size) {
BoxConstraints looseConstraints = new BoxConstraints.loose(size);
// This part of the layout has the same effect as putting the toolbar and
// This part of the layout has the same effect as putting the app bar and
// body in a column and making the body flexible. What's different is that
// in this case the toolbar appears -after- the body in the stacking order,
// so the toolbar's shadow is drawn on top of the body.
// in this case the app bar appears -after- the body in the stacking order,
// so the app bar's shadow is drawn on top of the body.
final BoxConstraints fullWidthConstraints = looseConstraints.tighten(width: size.width);
double contentTop = padding.top;
double contentBottom = size.height - padding.bottom;
if (hasChild(_ScaffoldSlot.toolBar)) {
contentTop = layoutChild(_ScaffoldSlot.toolBar, fullWidthConstraints).height;
positionChild(_ScaffoldSlot.toolBar, Offset.zero);
if (hasChild(_ScaffoldSlot.appBar)) {
contentTop = layoutChild(_ScaffoldSlot.appBar, fullWidthConstraints).height;
positionChild(_ScaffoldSlot.appBar, Offset.zero);
}
if (hasChild(_ScaffoldSlot.body)) {
......@@ -183,7 +183,7 @@ class _FloatingActionButtonTransitionState extends State<_FloatingActionButtonTr
class Scaffold extends StatefulWidget {
Scaffold({
Key key,
this.toolBar,
this.appBar,
this.body,
this.floatingActionButton,
this.drawer,
......@@ -192,10 +192,10 @@ class Scaffold extends StatefulWidget {
this.appBarHeight
}) : super(key: key) {
assert((appBarBehavior == AppBarBehavior.scroll) ? scrollableKey != null : true);
assert((appBarBehavior == AppBarBehavior.scroll) ? appBarHeight != null && appBarHeight > kToolBarHeight : true);
assert((appBarBehavior == AppBarBehavior.scroll) ? appBarHeight != null && appBarHeight > kAppBarHeight : true);
}
final ToolBar toolBar;
final AppBar appBar;
final Widget body;
final Widget floatingActionButton;
final Widget drawer;
......@@ -375,12 +375,12 @@ class ScaffoldState extends State<Scaffold> {
bool _shouldShowBackArrow;
Widget _getModifiedToolBar({ EdgeInsets padding, double foregroundOpacity: 1.0, int elevation }) {
ToolBar toolBar = config.toolBar;
if (toolBar == null)
Widget _getModifiedAppBar({ EdgeInsets padding, double foregroundOpacity: 1.0, int elevation }) {
AppBar appBar = config.appBar;
if (appBar == null)
return null;
EdgeInsets toolBarPadding = new EdgeInsets.only(top: padding.top);
Widget left = toolBar.left;
EdgeInsets appBarPadding = new EdgeInsets.only(top: padding.top);
Widget left = appBar.leading;
if (left == null) {
if (config.drawer != null) {
left = new IconButton(
......@@ -399,9 +399,9 @@ class ScaffoldState extends State<Scaffold> {
}
}
}
return toolBar.copyWith(
elevation: elevation ?? toolBar.elevation ?? 4,
padding: toolBarPadding,
return appBar.copyWith(
elevation: elevation ?? appBar.elevation ?? 4,
padding: appBarPadding,
foregroundOpacity: foregroundOpacity,
left: left
);
......@@ -421,9 +421,9 @@ class ScaffoldState extends State<Scaffold> {
return false;
}
double _toolBarOpacity(double progress) {
// The value of progress is 1.0 if the entire (padded) toolbar is visible, 0.0
// if the toolbar's height is zero.
double _appBarOpacity(double progress) {
// The value of progress is 1.0 if the entire (padded) app bar is visible, 0.0
// if the app bar's height is zero.
return new Tween<double>(begin: 0.0, end: 1.0).evaluate(new CurvedAnimation(
parent: new AnimationController()..value = progress.clamp(0.0, 1.0),
curve: new Interval(0.50, 1.0)
......@@ -431,35 +431,35 @@ class ScaffoldState extends State<Scaffold> {
}
Widget _buildScrollableAppBar(BuildContext context) {
final EdgeInsets toolBarPadding = MediaQuery.of(context)?.padding ?? EdgeInsets.zero;
final double toolBarHeight = kToolBarHeight + toolBarPadding.top;
final EdgeInsets appBarPadding = MediaQuery.of(context)?.padding ?? EdgeInsets.zero;
final double appBarHeight = kAppBarHeight + appBarPadding.top;
Widget appBar;
if (_scrollOffset <= appBarHeight && _scrollOffset >= appBarHeight - toolBarHeight) {
// scrolled to the top, only the toolbar is (partially) visible
if (_scrollOffset <= appBarHeight && _scrollOffset >= appBarHeight - appBarHeight) {
// scrolled to the top, only the app bar is (partially) visible
final double height = math.max(_floatingAppBarHeight, appBarHeight - _scrollOffset);
final double opacity = _toolBarOpacity(1.0 - ((toolBarHeight - height) / toolBarHeight));
final double opacity = _appBarOpacity(1.0 - ((appBarHeight - height) / appBarHeight));
_appBarController.value = (appBarHeight - height) / appBarHeight;
appBar = new SizedBox(
height: height,
child: _getModifiedToolBar(padding: toolBarPadding, foregroundOpacity: opacity)
child: _getModifiedAppBar(padding: appBarPadding, foregroundOpacity: opacity)
);
} else if (_scrollOffset > appBarHeight) {
// scrolled down, show the "floating" toolbar
_floatingAppBarHeight = (_floatingAppBarHeight + _scrollOffsetDelta).clamp(0.0, toolBarHeight);
final double toolBarOpacity = _toolBarOpacity(_floatingAppBarHeight / toolBarHeight);
// scrolled down, show the "floating" app bar
_floatingAppBarHeight = (_floatingAppBarHeight + _scrollOffsetDelta).clamp(0.0, appBarHeight);
final double appBarOpacity = _appBarOpacity(_floatingAppBarHeight / appBarHeight);
_appBarController.value = (appBarHeight - _floatingAppBarHeight) / appBarHeight;
appBar = new SizedBox(
height: _floatingAppBarHeight,
child: _getModifiedToolBar(padding: toolBarPadding, foregroundOpacity: toolBarOpacity)
child: _getModifiedAppBar(padding: appBarPadding, foregroundOpacity: appBarOpacity)
);
} else {
// _scrollOffset < appBarHeight - toolBarHeight, scrolled to the top, flexible space is visible
// _scrollOffset < appBarHeight - appBarHeight, scrolled to the top, flexible space is visible
final double height = appBarHeight - _scrollOffset.clamp(0.0, appBarHeight);
_appBarController.value = (appBarHeight - height) / appBarHeight;
appBar = new SizedBox(
height: height,
child: _getModifiedToolBar(padding: toolBarPadding, elevation: 0)
child: _getModifiedAppBar(padding: appBarPadding, elevation: 0)
);
_floatingAppBarHeight = 0.0;
}
......@@ -484,13 +484,13 @@ class ScaffoldState extends State<Scaffold> {
final List<LayoutId> children = new List<LayoutId>();
_addIfNonNull(children, config.body, _ScaffoldSlot.body);
if (config.appBarBehavior == AppBarBehavior.anchor) {
Widget toolBar = new ConstrainedBox(
child: _getModifiedToolBar(padding: padding),
constraints: new BoxConstraints(maxHeight: config.appBarHeight ?? kExtendedToolBarHeight + padding.top)
Widget appBar = new ConstrainedBox(
child: _getModifiedAppBar(padding: padding),
constraints: new BoxConstraints(maxHeight: config.appBarHeight ?? kExtendedAppBarHeight + padding.top)
);
_addIfNonNull(children, toolBar, _ScaffoldSlot.toolBar);
_addIfNonNull(children, appBar, _ScaffoldSlot.appBar);
}
// Otherwise the ToolBar will be part of a [toolbar, body] Stack. See AppBarBehavior.scroll below.
// Otherwise the AppBar will be part of a [app bar, body] Stack. See AppBarBehavior.scroll below.
if (_currentBottomSheet != null ||
(_dismissedBottomSheets != null && _dismissedBottomSheets.isNotEmpty)) {
......
......@@ -31,7 +31,7 @@ void main() {
title: "Markdown Demo",
routes: <String, WidgetBuilder>{
'/': (BuildContext context) => new Scaffold(
toolBar: new ToolBar(center: new Text("Markdown Demo")),
appBar: new AppBar(title: new Text("Markdown Demo")),
body: new Markdown(data: _kMarkdownData)
)
}
......
......@@ -34,8 +34,8 @@ class _FlutterDemoState extends State<FlutterDemo> {
Widget build(BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
center: new Text('Flutter Demo')
appBar: new AppBar(
title: new Text('Flutter Demo')
),
body: new Center(
child: new Text('Button tapped $_counter time${ _counter == 1 ? '' : 's' }.')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment