Fix leaking animation in floating action button. (#3575)
diff --git a/examples/stocks/test/locale_test.dart b/examples/stocks/test/locale_test.dart
index b2f9178..a23c1e9 100644
--- a/examples/stocks/test/locale_test.dart
+++ b/examples/stocks/test/locale_test.dart
@@ -20,10 +20,6 @@
tester.setLocale("es", "US");
tester.pump();
expect(tester, hasWidget(find.text('MERCADO')));
-
- // TODO(abarth): We're leaking an animation. We should track down the leak
- // and plug it rather than waiting for the animation to end here.
- tester.pump(const Duration(seconds: 1));
});
});
}
diff --git a/packages/flutter/lib/src/material/floating_action_button.dart b/packages/flutter/lib/src/material/floating_action_button.dart
index 62e8103..90fdaa2 100644
--- a/packages/flutter/lib/src/material/floating_action_button.dart
+++ b/packages/flutter/lib/src/material/floating_action_button.dart
@@ -110,6 +110,12 @@
}
@override
+ void dispose() {
+ _childSegueController.dispose();
+ super.dispose();
+ }
+
+ @override
void didUpdateConfig(FloatingActionButton oldConfig) {
super.didUpdateConfig(oldConfig);
if (Widget.canUpdate(oldConfig.child, config.child) && config.backgroundColor == oldConfig.backgroundColor)
diff --git a/packages/flutter/lib/src/scheduler/binding.dart b/packages/flutter/lib/src/scheduler/binding.dart
index db3f46e..9c3123d 100644
--- a/packages/flutter/lib/src/scheduler/binding.dart
+++ b/packages/flutter/lib/src/scheduler/binding.dart
@@ -250,10 +250,17 @@
exception: reason,
library: 'scheduler library',
informationCollector: (StringBuffer information) {
- information.writeln(
- 'There ${ transientCallbackCount == 1 ? "was one transient callback" : "were $transientCallbackCount transient callbacks" } '
- 'left. The stack traces for when they were registered are as follows:'
- );
+ if (transientCallbackCount == 1) {
+ information.writeln(
+ 'There was one transient callback left. '
+ 'The stack traces for when it was registered is as follows:'
+ );
+ } else {
+ information.writeln(
+ 'There were $transientCallbackCount transient callbacks left. '
+ 'The stack traces for when they were registered are as follows:'
+ );
+ }
for (int id in _transientCallbacks.keys) {
_FrameCallbackEntry entry = _transientCallbacks[id];
information.writeln('-- callback $id --');