From e3d587ea5276b2278d5eb26d4e2f77e8c9165e95 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Thu, 7 Jan 2016 09:24:14 -0800 Subject: [PATCH] Move default back behavior to FlutterWidgetBinding Previously MaterialApp was responsible for ending the activity when the back stack was empty. However, this behavior is more general than material. This patch moves the behavior to FlutterWidgetBinding, which has a global view of all the binding observers. Fixes #1086 --- packages/flutter/lib/src/material/material_app.dart | 6 +++--- packages/flutter/lib/src/widgets/binding.dart | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/flutter/lib/src/material/material_app.dart b/packages/flutter/lib/src/material/material_app.dart index 20cda68719b..128e9cc551b 100644 --- a/packages/flutter/lib/src/material/material_app.dart +++ b/packages/flutter/lib/src/material/material_app.dart @@ -86,11 +86,11 @@ class _MaterialAppState extends State implements BindingObserver { assert(mounted); NavigatorState navigator = _navigator.currentState; assert(navigator != null); + bool result = false; navigator.openTransaction((NavigatorTransaction transaction) { - if (!transaction.pop()) - activity.finishCurrentActivity(); + result = transaction.pop(); }); - return true; + return result; } void didChangeSize(Size size) => setState(() { _size = size; }); diff --git a/packages/flutter/lib/src/widgets/binding.dart b/packages/flutter/lib/src/widgets/binding.dart index 47e61c758a8..c198f39ed8b 100644 --- a/packages/flutter/lib/src/widgets/binding.dart +++ b/packages/flutter/lib/src/widgets/binding.dart @@ -77,8 +77,9 @@ class WidgetFlutterBinding extends BindingBase with Scheduler, Gesturer, Rendere void handlePopRoute() { for (BindingObserver observer in _observers) { if (observer.didPopRoute()) - break; + return; } + activity.finishCurrentActivity(); } void handleAppLifecycleStateChanged(ui.AppLifecycleState state) {