diff --git a/lib/src/image/fade_widget.dart b/lib/src/image/fade_widget.dart index 233d0ea..6d4796f 100644 --- a/lib/src/image/fade_widget.dart +++ b/lib/src/image/fade_widget.dart @@ -41,6 +41,7 @@ class _FadeWidgetState extends State late Animation opacity; late AnimationController controller; late bool hideWidget; + CurvedAnimation? curved; @override Widget build(BuildContext context) { @@ -59,6 +60,7 @@ class _FadeWidgetState extends State super.initState(); controller = AnimationController(duration: widget.duration, vsync: this); final curved = CurvedAnimation(parent: controller, curve: widget.curve); + this.curved = curved; var begin = widget.direction == AnimationDirection.forward ? 0.0 : 1.0; var end = widget.direction == AnimationDirection.forward ? 1.0 : 0.0; opacity = Tween(begin: begin, end: end).animate(curved); @@ -81,7 +83,10 @@ class _FadeWidgetState extends State opacity.removeStatusListener(animationStatusChange); controller.duration = widget.duration; controller.value = 0; + this.curved?.dispose(); + this.curved = null; final curved = CurvedAnimation(parent: controller, curve: widget.curve); + this.curved = curved; var begin = widget.direction == AnimationDirection.forward ? 0.0 : 1.0; var end = widget.direction == AnimationDirection.forward ? 1.0 : 0.0; opacity = Tween(begin: begin, end: end).animate(curved); @@ -101,6 +106,8 @@ class _FadeWidgetState extends State void dispose() { opacity.removeStatusListener(animationStatusChange); controller.dispose(); + curved?.dispose(); + curved = null; super.dispose(); }