From 15e8f741fb3273c2b79004df27b74fe84dc192c5 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Tue, 25 Aug 2015 15:33:52 -0700 Subject: [PATCH] Properly track mimics that move in the tree We weren't telling the new mimicable that we wanted to start mimicing it. --- packages/flutter/lib/widgets/mimic.dart | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/flutter/lib/widgets/mimic.dart b/packages/flutter/lib/widgets/mimic.dart index f8a7bbcafd..eb6aa22cf8 100644 --- a/packages/flutter/lib/widgets/mimic.dart +++ b/packages/flutter/lib/widgets/mimic.dart @@ -75,10 +75,7 @@ class Mimic extends GlobalKeyWatcher { void didUnmount() { super.didUnmount(); - if (_mimicable != null) { - _mimicable.stopMimic(); - _mimicable = null; - } + _stopMimic(); } void didSyncWatchedKey(GlobalKey key, Widget widget) { @@ -91,9 +88,18 @@ class Mimic extends GlobalKeyWatcher { _setMimicable(null); } + void _stopMimic() { + if (_mimicable != null) { + _mimicable.stopMimic(); + _mimicable = null; + } + } + void _setMimicable(widget) { - if (_mimicable == null && widget != null) + if (_mimicable != widget) { + _stopMimic(); widget.startMimic(); + } setState(() { _mimicable = widget; });