flutter - 如何在 Flutter with Flushbar 中使用 AnimationController 重复动画?
问题描述
我正在为 Flutter 使用Flushbar 插件。
该插件运行良好,但我不明白如何重复我附加到它的动画控制器播放的动画。
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 上还是在 Internet 上的任何其他地方,请帮助我。
提前致谢
解决方案
我解决了这个问题!这是 mixin 的一个问题:我正在使用SingleTickerProviderStateMixin
,为此我需要一个TickerProviderStateMixin
.
推荐阅读
- c++ - 使用 WXUNIV=1 构建 wxWidgets 失败
- react-native - 系统声音而不是自定义声音在退出和背景状态下播放推送通知 - Android
- python - 从 scipy 忽略 NaN 执行 pearsonr() 相关性
- ios - IOS:接受属性允许来自本地存储但不允许来自 iCloud 的相同文件
- php - Jquery $.post() 数据无法作为 PHP 变量检索
- laravel - 如何使 livewire 加载与浏览器事件一起工作
- python - 如何可视化“自制”Python 决策树?
- c++ - 内联 lambda 参数的 C++ 概念
- c# - 在 asp.net 中的索引更改不起作用下拉列表
- firebase - 不同的谷歌云函数调用不同的存储?