Unverified Commit 1f3eb503 authored by amirh's avatar amirh Committed by GitHub

Add a hasNotch flag to BottomAppBar (#14856)

parent c6e7ad1c
...@@ -46,6 +46,7 @@ class BottomAppBar extends StatefulWidget { ...@@ -46,6 +46,7 @@ class BottomAppBar extends StatefulWidget {
Key key, Key key,
this.color, this.color,
this.elevation: 8.0, this.elevation: 8.0,
this.hasNotch: true,
this.child, this.child,
}) : assert(elevation != null), }) : assert(elevation != null),
assert(elevation >= 0.0), assert(elevation >= 0.0),
...@@ -68,6 +69,17 @@ class BottomAppBar extends StatefulWidget { ...@@ -68,6 +69,17 @@ class BottomAppBar extends StatefulWidget {
/// Defaults to 8, the appropriate elevation for bottom app bars. /// Defaults to 8, the appropriate elevation for bottom app bars.
final double elevation; final double elevation;
/// Whether to make a notch in the bottom app bar's shape for the floating
/// action button.
///
/// When true, the bottom app bar uses
/// [ScaffoldGeometry.floatingActionButtonNotch] to make a notch along its
/// top edge, where it is overlapped by the
/// [ScaffoldGeometry.floatingActionButtonArea].
///
/// When false, the shape of the bottom app bar is a rectangle.
final bool hasNotch;
@override @override
State createState() => new _BottomAppBarState(); State createState() => new _BottomAppBarState();
} }
...@@ -83,8 +95,11 @@ class _BottomAppBarState extends State<BottomAppBar> { ...@@ -83,8 +95,11 @@ class _BottomAppBarState extends State<BottomAppBar> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final CustomClipper<Path> clipper = widget.hasNotch
? new _BottomAppBarClipper(geometry: geometryListenable)
: const ShapeBorderClipper(shape: const RoundedRectangleBorder());
return new PhysicalShape( return new PhysicalShape(
clipper: new _BottomAppBarClipper(geometry: geometryListenable), clipper: clipper,
elevation: widget.elevation, elevation: widget.elevation,
// TODO(amirh): use a default color from the theme. // TODO(amirh): use a default color from the theme.
color: widget.color ?? Colors.white, color: widget.color ?? Colors.white,
......
...@@ -33,6 +33,12 @@ void main() { ...@@ -33,6 +33,12 @@ void main() {
) )
); );
}); });
// TODO(amirh): test a BottomAppBar with hasNotch=false and an overlapping
// FAB.
//
// Cannot test this before https://github.com/flutter/flutter/pull/14368
// as there is no way to make the FAB and BAB overlap.
} }
// The bottom app bar clip path computation is only available at paint time. // The bottom app bar clip path computation is only available at paint time.
......
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