首页 > 解决方案 > _SplashScreenViewState#32282(ticker active) 被设置为一个活动的 Ticker

问题描述

我正在为我的启动画面使用这个包。升级到 Flutter 2.2.3 版本后,出现以下错误。每当我重新安装应用程序时,它总是在日志中显示此警告。它说dispose()AnimationController但我还没有创建任何AnimationController. 谢谢您的帮助 :)

下面是我的代码

class SplashScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    AppStatusBar.setColor();
    return SplashScreenView(
      imageSrc: ImageConstants.kLogoImage,
      navigateRoute: LoginScreen(),
      duration: 1500,
      imageSize: 100,
      backgroundColor: Colors.white,
    );
  }
}

以下是控制台消息

The following assertion was thrown while finalizing the widget tree:
_SplashScreenViewState#32282(ticker active) was disposed with an active Ticker.

_SplashScreenViewState created a Ticker via its SingleTickerProviderStateMixin, but at the time dispose() was called on the mixin, that Ticker was still active. The Ticker must be disposed before calling super.dispose().

Tickers used by AnimationControllers should be disposed by calling dispose() on the AnimationController itself. Otherwise, the ticker will leak.

The offending ticker was: Ticker(created by _SplashScreenViewState#32282(lifecycle state: created))
The stack trace when the Ticker was actually created was:
#0      new Ticker.<anonymous closure>
package:flutter/…/scheduler/ticker.dart:67
#1      new Ticker
package:flutter/…/scheduler/ticker.dart:69
#2      SingleTickerProviderStateMixin.createTicker
package:flutter/…/widgets/ticker_provider.dart:129
#3      new AnimationController
package:flutter/…/animation/animation_controller.dart:247
#4      _SplashScreenViewState.initState
package:splash_screen_view/SplashScreenView.dart:126
#5      StatefulElement._firstBuild
package:flutter/…/widgets/framework.dart:4711
#6      ComponentElement.mount
package:flutter/…/widgets/framework.dart:4548
...     Normal element mounting (172 frames)
#178    Element.inflateWidget
package:flutter/…/widgets/framework.dart:3611
#179    MultiChildRenderObjectElement.inflateWidget
package:flutter/…/widgets/framework.dart:6221
#180    MultiChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:6232
...     Normal element mounting (345 frames)
#525    Element.inflateWidget
package:flutter/…/widgets/framework.dart:3611
#526    Element.updateChild
package:flutter/…/widgets/framework.dart:3363
#527    RenderObjectToWidgetElement._rebuild
package:flutter/…/widgets/binding.dart:1189
#528    RenderObjectToWidgetElement.mount
package:flutter/…/widgets/binding.dart:1159
#529    RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure>
package:flutter/…/widgets/binding.dart:1104
#530    BuildOwner.buildScope
package:flutter/…/widgets/framework.dart:2535
#531    RenderObjectToWidgetAdapter.attachToRenderTree
package:flutter/…/widgets/binding.dart:1103
#532    WidgetsBinding.attachRootWidget
package:flutter/…/widgets/binding.dart:937
#533    WidgetsBinding.scheduleAttachRootWidget.<anonymous closure>
package:flutter/…/widgets/binding.dart:917
(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)

When the exception was thrown, this was the stack
#0      SingleTickerProviderStateMixin.dispose.<anonymous closure>
package:flutter/…/widgets/ticker_provider.dart:142
#1      SingleTickerProviderStateMixin.dispose
package:flutter/…/widgets/ticker_provider.dart:156
#2      _SplashScreenViewState.dispose
package:splash_screen_view/SplashScreenView.dart:149
#3      StatefulElement.unmount
package:flutter/…/widgets/framework.dart:4800
#4      _InactiveElements._unmount
package:flutter/…/widgets/framework.dart:1847

标签: flutterflutter-layoutflutter-dependenciesflutter-animation

解决方案


推荐阅读