Как повторить анимацию с AnimationController в Flutter с Flushbar? - PullRequest
0 голосов
/ 20 марта 2020

Я использую плагин Flushbar для Flutter.
Плагин работает очень хорошо, но я не могу понять, как я могу повторить анимацию, воспроизводимую контроллером анимации, который я к нему подключаю .

AnimationController _controller;

@override
void initState() {
  _controller = AnimationController(
      vsync: this,
      duration: Duration(seconds: 3),
    );
  super.initState();
}

@override
void dispose() {
  _controller.dispose();
  super.dispose();
}

void showFlushBar() {
    Flushbar(
        titleText: Text(
          "Title",
          style: TextStyle(
              fontFamily: 'Futura',
              color: Colors.white,
              fontSize: MediaQuery.of(context).size.width / 18),
        ),
        messageText: Text(
          "Message"
          style: TextStyle(
              fontFamily: 'Futura',
              color: Colors.white,
              fontSize: MediaQuery.of(context).size.width / 25),
        ),
        showProgressIndicator: true,
        progressIndicatorBackgroundColor: Colors.blueGrey,
        progressIndicatorController: _controller,
      )..show(context);
      _controller.forward();
}

В первый раз анимация работает хорошо, но со второго раза я получаю эту ошибку:

E/flutter (29680): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: 'package:flutter/src/animation/animation_controller.dart': Failed assertion: line 451 pos 7: '_ticker != null': AnimationController.forward() called after AnimationController.dispose()
E/flutter (29680): AnimationController methods should not be used after calling dispose.
E/flutter (29680): #0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:42:39)
E/flutter (29680): #1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:38:5)
E/flutter (29680): #2      AnimationController.forward (package:flutter/src/animation/animation_controller.dart:451:7)
E/flutter (29680): #3      _SettingsScreenState._changeLanguage (package:formula1_fan_assistant/screens/settings_screen.dart:401:19)
E/flutter (29680): #4      _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:73:64)
E/flutter (29680): #5      _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter (29680): #6      _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (29680): #7      _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
E/flutter (29680): #8      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
E/flutter (29680): #9      Future._propagateToListeners (dart:async/future_impl.dart:709:32)
E/flutter (29680): #10     Future._completeWithValue (dart:async/future_impl.dart:524:5)
E/flutter (29680): #11     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:32:15)
E/flutter (29680): #12     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:290:13)
E/flutter (29680): #13     _SettingsScreenState.myLoadAsset (package:formula1_fan_assistant/screens/settings_screen.dart)
E/flutter (29680): #14     _asyncErrorWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:80:45)
E/flutter (29680): #15     _rootRunBinary (dart:async/zone.dart:1146:38)
E/flutter (29680): #16     _CustomZone.runBinary (dart:async/zone.dart:1039:19)
E/flutter (29680): #17     _FutureListener.handleError (dart:async/future_impl.dart:153:20)
E/flutter (29680): #18     Future._propagateToListeners.handleError (dart:async/future_impl.dart:692:47)
E/flutter (29680): #19     Future._propagateToListeners (dart:async/future_impl.dart:713:24)
E/flutter (29680): #20     Future._addListener.<anonymous closure> (dart:async/future_impl.dart:389:9)
E/flutter (29680): #21     _rootRun (dart:async/zone.dart:1126:13)
E/flutter (29680): #22     _CustomZone.run (dart:async/zone.dart:1023:19)
E/flutter (29680): #23     _CustomZone.runGuarded (dart:async/zone.dart:925:7)
E/flutter (29680): #24     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
E/flutter (29680): #25     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
E/flutter (29680): #26     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
E/flutter (29680): 

Я действительно не могу найти решение, ни на SO и нигде на Inte rnet, поэтому, пожалуйста, помогите мне.
Заранее спасибо

1 Ответ

0 голосов
/ 20 марта 2020

Я решил проблему! Это была проблема с миксином: я использовал SingleTickerProviderStateMixin, когда для этого мне понадобился TickerProviderStateMixin.

...