Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/flutter/flutter
Browse files Browse the repository at this point in the history
* 'master' of https://github.com/flutter/flutter:
  Roll engine to aa9ce70 (flutter#16289)
  Rename chip's border attribute to shape for consistency. (flutter#16276)
  Added BeveledRectangleBorder ShapeBorder (flutter#16279)
  Roll engine to version be07059 (flutter#16264)
  Make Podfiles work with Cocoapods 1.5.0 (flutter#16273)
  Updated appearance of filled TextFields - added UnderlineInputBorder.borderRadius (flutter#16272)
  Handle whitespace in entry values in the AAPT badging parser (flutter#16245)
  a11y adjustments for the Bottom app bar demo (flutter#16238)
  Play butterfly video from asset instead of network (flutter#16269)
  • Loading branch information
teriyakijack committed Apr 6, 2018
2 parents 033f420 + 2134adc commit e009183
Show file tree
Hide file tree
Showing 14 changed files with 444 additions and 133 deletions.
2 changes: 1 addition & 1 deletion bin/internal/engine.version
@@ -1 +1 @@
23c0b7bbf77762d774cb96f93af0016776ec60c4
aa9ce7092801e7ed8f3f86df0d1067279d13784d
180 changes: 111 additions & 69 deletions examples/flutter_gallery/lib/demo/material/bottom_app_bar_demo.dart
Expand Up @@ -31,7 +31,7 @@ class _BottomAppBarDemoState extends State<BottomAppBarDemo> {
// The index of the currently-selected _FabShapeConfiguration.
int fabShapeIndex = 1;

static const List<_FabShapeConfiguration> _fabShapeConfigurations = const <_FabShapeConfiguration>[
static const List<_FabShapeConfiguration> _fabShapeConfigurations = const <_FabShapeConfiguration>[
const _FabShapeConfiguration('None', null),
const _FabShapeConfiguration('Circular',
const FloatingActionButton(
Expand All @@ -51,6 +51,14 @@ class _BottomAppBarDemoState extends State<BottomAppBarDemo> {
// The currently-selected Color for the Bottom App Bar.
Color babColor;

// Accessible names for the colors that a Screen Reader can use to
// identify them.
static final Map<Color, String> colorToName = <Color, String> {
null: 'White',
Colors.orange: 'Orange',
Colors.green: 'Green',
Colors.lightBlue: 'Light blue',
};
static const List<Color> babColors = const <Color> [
null,
Colors.orange,
Expand Down Expand Up @@ -93,25 +101,8 @@ class _BottomAppBarDemoState extends State<BottomAppBarDemo> {
'Floating action button',
style: Theme.of(context).textTheme.title,
),
new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
const SizedBox(width: 96.0,
child: const Text('Shape: '),
),
new Expanded(child: buildFabShapePicker()),
],
),
new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
const SizedBox(
width: 96.0,
child: const Text('Location: '),
),
new Expanded(child: buildFabLocationPicker()),
],
),
buildFabShapePicker(),
buildFabLocationPicker(),
const Divider(),
new Text(
'Bottom app bar options',
Expand All @@ -133,30 +124,51 @@ class _BottomAppBarDemoState extends State<BottomAppBarDemo> {
}

Widget buildFabShapePicker() {
return new Padding(
padding: const EdgeInsets.all(8.0),
child: new RaisedButton(
child: const Text('Change'),
onPressed: () {
setState(() {
fabShapeIndex = (fabShapeIndex + 1) % _fabShapeConfigurations.length;
});
},
),
return new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
const SizedBox(width: 96.0,
child: const Text('Shape: '),
),
new Expanded(
child: new Padding(
padding: const EdgeInsets.all(8.0),
child: new RaisedButton(
child: const Text('Change shape'),
onPressed: () {
setState(() {
fabShapeIndex = (fabShapeIndex + 1) % _fabShapeConfigurations.length;
});
},
),
),
),
],
);
}

Widget buildFabLocationPicker() {
return new Padding(
padding: const EdgeInsets.all(8.0),
child: new RaisedButton(
child: const Text('Move'),
onPressed: () {
setState(() {
fabLocationIndex = (fabLocationIndex + 1) % _fabLocationConfigurations.length;
});
},
),
return new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
const SizedBox(
width: 96.0,
child: const Text('Location: '),
),
new Expanded(
child: new Padding(
padding: const EdgeInsets.all(8.0),
child: new RaisedButton(
child: const Text('Move'),
onPressed: () {
setState(() {
fabLocationIndex = (fabLocationIndex + 1) % _fabLocationConfigurations.length;
});
},
),
),
),
],
);
}

Expand All @@ -166,30 +178,38 @@ class _BottomAppBarDemoState extends State<BottomAppBarDemo> {
];
for (Color color in babColors) {
colors.add(
new Radio<Color>(
value: color,
groupValue: babColor,
onChanged: (Color color) {
setState(() {
babColor = color;
});
},
),
);
colors.add(
new Container(
decoration: new BoxDecoration(
color: color,
border: new Border.all(width:2.0, color: Colors.black),
),
child: const SizedBox(width: 20.0, height: 20.0),
new Semantics(
label: 'Set Bottom App Bar color to ${colorToName[color]}',
container: true,
explicitChildNodes: false,
child: new Row(children: <Widget> [
new Radio<Color>(
value: color,
groupValue: babColor,
onChanged: (Color color) {
setState(() {
babColor = color;
});
},
),
new Container(
decoration: new BoxDecoration(
color: color,
border: new Border.all(width:2.0, color: Colors.black),
),
child: const SizedBox(width: 20.0, height: 20.0),
),
const Padding(padding: const EdgeInsets.only(left: 12.0)),
]),
),
);
colors.add(const Padding(padding: const EdgeInsets.only(left: 12.0)));
}
return new Row(
children: colors,
mainAxisAlignment: MainAxisAlignment.center,
return new SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: new Row(
children: colors,
mainAxisAlignment: MainAxisAlignment.center,
),
);
}

Expand Down Expand Up @@ -261,7 +281,8 @@ class _DemoBottomAppBar extends StatelessWidget {
new IconButton(
icon: const Icon(Icons.menu),
onPressed: () {
showModalBottomSheet<Null>(context: context, builder: (BuildContext context) => const _DemoDrawer()); },
showModalBottomSheet<Null>(context: context, builder: (BuildContext context) => const _DemoDrawer());
},
),
new Expanded(
child: new AnimatedCrossFade(
Expand Down Expand Up @@ -290,14 +311,35 @@ class _DemoBottomAppBar extends StatelessWidget {
);
}
rowContents.addAll(<Widget> [
new IconButton(
icon: const Icon(Icons.search),
onPressed: () {},
// Generally, an icon button does not need to be wrapped in a Semantics object.
// When the button has a null onPressed callback, it will be disabled by default.
//
// However, for the purposes of this demo, we don't want the button to appear disabled.
// To achieve this we use a no-op callback instead of a null callback. This allows
// the buttons to appear active, but perform no actions.
//
// To tell the accessibility service that the callback is a no-op, the Semantics widget
// wraps these buttons with `enabled: false`.
new Semantics(
label: 'Search',
container: true,
explicitChildNodes: false,
enabled: false,
child: new IconButton(
icon: const Icon(Icons.search),
onPressed: () {},
),
),
new Semantics(
label: 'Show more',
container: true,
explicitChildNodes: false,
enabled: false,
child: new IconButton(
icon: const Icon(Icons.more_vert),
onPressed: () {},
),
),
new IconButton(
icon: const Icon(Icons.more_vert),
onPressed: () {},
)
]);
return new Row(
children: rowContents,
Expand Down
2 changes: 1 addition & 1 deletion examples/flutter_gallery/lib/gallery/item.dart
Expand Up @@ -89,7 +89,7 @@ List<GalleryItem> _buildGalleryItems() {
buildRoute: (BuildContext context) => new BackdropDemo(),
),
new GalleryItem(
title: 'Bottom App Bar',
title: 'Bottom app bar',
subtitle: 'With repositionable floating action button',
category: 'Material Components',
routeName: BottomAppBarDemo.routeName,
Expand Down
1 change: 1 addition & 0 deletions packages/flutter/lib/painting.dart
Expand Up @@ -19,6 +19,7 @@ library painting;

export 'src/painting/alignment.dart';
export 'src/painting/basic_types.dart';
export 'src/painting/beveled_rectangle_border.dart';
export 'src/painting/binding.dart';
export 'src/painting/border_radius.dart';
export 'src/painting/borders.dart';
Expand Down

0 comments on commit e009183

Please sign in to comment.