[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
This commit is contained in:
parent
e48c822ce3
commit
ede5dfce30
@ -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' }.')
|
||||
|
Loading…
x
Reference in New Issue
Block a user