Merge pull request #2237 from HansMuller/tabs

Stop animating in deactivate()
This commit is contained in:
Hans Muller 2016-02-26 16:15:28 -08:00
commit c56be8efba

View File

@ -451,10 +451,8 @@ class TabBarSelectionState<T> extends State<TabBarSelection<T>> {
_initValueToIndex(); _initValueToIndex();
} }
void dispose() { void _writeValue() {
_controller.stop();
PageStorage.of(context)?.writeState(context, _value); PageStorage.of(context)?.writeState(context, _value);
super.dispose();
} }
List<T> get values => config.values; List<T> get values => config.values;
@ -477,6 +475,7 @@ class TabBarSelectionState<T> extends State<TabBarSelection<T>> {
if (!_valueIsChanging) if (!_valueIsChanging)
_previousValue = _value; _previousValue = _value;
_value = newValue; _value = newValue;
_writeValue();
_valueIsChanging = true; _valueIsChanging = true;
// If the selected value change was triggered by a drag gesture, the current // If the selected value change was triggered by a drag gesture, the current
@ -530,11 +529,13 @@ class TabBarSelectionState<T> extends State<TabBarSelection<T>> {
} }
void deactivate() { void deactivate() {
_controller.stop();
for (TabBarSelectionAnimationListener listener in _animationListeners.toList()) { for (TabBarSelectionAnimationListener listener in _animationListeners.toList()) {
listener.handleSelectionDeactivate(); listener.handleSelectionDeactivate();
unregisterAnimationListener(listener); unregisterAnimationListener(listener);
} }
assert(_animationListeners.isEmpty); assert(_animationListeners.isEmpty);
_writeValue();
} }
Widget build(BuildContext context) { Widget build(BuildContext context) {