Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AnimationController.forward() called after AnimationController.dispose() #3

Closed
josephchenghmlet opened this issue Jul 30, 2019 · 1 comment

Comments

@josephchenghmlet
Copy link
Contributor

Flutter Version

[✓] Flutter (Channel stable, v1.7.8+hotfix.3, on Mac OS X, locale en-SG)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 10.3)
[✓] iOS tools - develop for iOS devices
[✓] Android Studio (version 3.4)
[✓] VS Code (version 1.36.1)

Error Stacktrace

flutter: ══╡ EXCEPTION CAUGHT BY FOUNDATION LIBRARY ╞════════════════════════════════════════════════════════
flutter: The following assertion was thrown while dispatching notifications for GZXDropdownMenuController:
flutter: AnimationController.forward() called after AnimationController.dispose()
flutter: AnimationController methods should not be used after calling dispose.
flutter: 'package:flutter/src/animation/animation_controller.dart':
flutter: Failed assertion: line 451 pos 7: '_ticker != null'
flutter:
flutter: Either the assertion indicates an error in the framework itself, or we should provide substantially
flutter: more information in this error message to help you determine and fix the underlying cause.
flutter: In either case, please report this assertion by filing a bug on GitHub:
flutter:   https://github.com/flutter/flutter/issues/new?template=BUG.md
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #2      AnimationController.forward (package:flutter/src/animation/animation_controller.dart:451:7)
flutter: #3      _GZXDropDownMenuState._showDropDownItemWidget (package:gzx_dropdown_menu/src/gzx_dropdown_menu.dart:76:19)
flutter: #4      _GZXDropDownMenuState._onController (package:gzx_dropdown_menu/src/gzx_dropdown_menu.dart:43:5)
flutter: #5      ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:206:21)
flutter: #6      GZXDropdownMenuController.show (package:gzx_dropdown_menu/src/gzx_dropdown_menu_controller.dart:13:5)
flutter: #7      _GZXDropDownHeaderState._menu.<anonymous closure> (package:gzx_dropdown_menu/src/gzx_dropdown_header.dart:123:29)
flutter: #8      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
flutter: #9      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365:11)
flutter: #10     TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:312:7)
flutter: #11     GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
flutter: #12     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20)
flutter: #13     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
flutter: #14     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
flutter: #15     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
flutter: #16     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
flutter: #20     _invoke1 (dart:ui/hooks.dart:250:10)
flutter: #21     _dispatchPointerDataPacket (dart:ui/hooks.dart:159:5)
flutter: (elided 5 frames from class _AssertionError and package dart:async)
flutter:
flutter: The GZXDropdownMenuController sending notification was:
flutter:   Instance of 'GZXDropdownMenuController'

At line 76 in gzx_dropdown_menu.dart

  _showDropDownItemWidget() {
    int menuIndex = widget.controller.menuIndex;
    if (menuIndex >= widget.menus.length || widget.menus[menuIndex] == null) {
      return;
    }

    _isShowDropDownItemWidget = !_isShowDropDownItemWidget;
    _isShowMask = !_isShowMask;

    _animation = new Tween(begin: 0.0, end: 
    widget.menus[menuIndex].dropDownHeight).animate(_controller)
      ..addListener(() {
        //这行如果不写,没有动画效果
        setState(() {});
      });

    if (_animation.status == AnimationStatus.completed) {
      _controller.reverse();
    } else {
      _controller.forward(); // Error throws here
    }
  }
@josephchenghmlet
Copy link
Contributor Author

#4 has merged into master

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant