From a54f7cf265f2a6aa320ce39cef82da874b1e85c3 Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Thu, 16 Jul 2015 17:36:45 -0700 Subject: [PATCH] Fix bug when having more than 2 routes --- packages/flutter/lib/widgets/navigator.dart | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/flutter/lib/widgets/navigator.dart b/packages/flutter/lib/widgets/navigator.dart index 4aabc0fc91d..4096c7d05dc 100644 --- a/packages/flutter/lib/widgets/navigator.dart +++ b/packages/flutter/lib/widgets/navigator.dart @@ -46,7 +46,13 @@ const Duration _kTransitionDuration = const Duration(milliseconds: 200); const Point _kTransitionStartPoint = const Point(0.0, 100.0); enum TransitionDirection { forward, reverse } class Transition extends AnimatedComponent { - Transition({ this.content, this.direction, this.onDismissed, this.interactive }); + Transition({ + String key, + this.content, + this.direction, + this.onDismissed, + this.interactive + }) : super(key: key); Widget content; TransitionDirection direction; bool interactive; @@ -206,6 +212,7 @@ class Navigator extends StatefulComponent { Widget build() { List visibleRoutes = new List(); for (int i = 0; i < state.history.length; i++) { + // TODO(jackson): Avoid building routes that are not visible HistoryEntry historyEntry = state.history[i]; Widget content = historyEntry.route.build(this, historyEntry.route); if (i == 0) { @@ -214,7 +221,8 @@ class Navigator extends StatefulComponent { } if (content == null) continue; - Transition transition = new Transition(content: content) + String key = historyEntry.route.key; + Transition transition = new Transition(content: content, key: key) ..direction = (i <= state.historyIndex) ? TransitionDirection.forward : TransitionDirection.reverse ..interactive = (i == state.historyIndex) ..onDismissed = () {