Commit 1ef3f82e authored by Adam Barth's avatar Adam Barth

Drawer edge swipe convers entire screen

When I tightened up the layout constraints for the Drawer in the
Scaffold, I ended up making the edge swipe detector cover the entire
screen.  This patch fixes that issue by putting the gesture detector for
the edge swipe just around the container with the proper width. We now
use a global key to maintain the state across hierarchy changes.
parent fb66bf11
......@@ -152,20 +152,27 @@ class DrawerControllerState extends State<DrawerController> {
}
final AnimatedColorValue _color = new AnimatedColorValue(Colors.transparent, end: Colors.black54);
final GlobalKey _gestureDetectorKey = new GlobalKey();
Widget build(BuildContext context) {
HitTestBehavior behavior;
Widget child;
if (_performance.status == PerformanceStatus.dismissed) {
behavior = HitTestBehavior.translucent;
child = new Align(
return new Align(
alignment: const FractionalOffset(0.0, 0.5),
widthFactor: 1.0,
child: new GestureDetector(
key: _gestureDetectorKey,
onHorizontalDragUpdate: _move,
onHorizontalDragEnd: _settle,
behavior: HitTestBehavior.translucent,
child: new Container(width: _kEdgeDragWidth)
)
);
} else {
_performance.updateVariable(_color);
child = new RepaintBoundary(
return new GestureDetector(
key: _gestureDetectorKey,
onHorizontalDragUpdate: _move,
onHorizontalDragEnd: _settle,
child: new RepaintBoundary(
child: new Stack(<Widget>[
new GestureDetector(
onTap: close,
......@@ -196,13 +203,8 @@ class DrawerControllerState extends State<DrawerController> {
)
)
])
)
);
}
return new GestureDetector(
onHorizontalDragUpdate: _move,
onHorizontalDragEnd: _settle,
behavior: behavior,
child: child
);
}
}
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