fixed memory leak
This commit is contained in:
@@ -91,8 +91,8 @@ class AnimateGradientShader extends StatefulWidget {
|
|||||||
|
|
||||||
class _AnimateGradientShaderState extends State<AnimateGradientShader>
|
class _AnimateGradientShaderState extends State<AnimateGradientShader>
|
||||||
with TickerProviderStateMixin {
|
with TickerProviderStateMixin {
|
||||||
late Animation<double> _animation;
|
AnimationController? _controller;
|
||||||
late AnimationController _controller;
|
Animation<double>? _animation;
|
||||||
|
|
||||||
late List<ColorTween> _colorTween;
|
late List<ColorTween> _colorTween;
|
||||||
|
|
||||||
@@ -123,17 +123,21 @@ class _AnimateGradientShaderState extends State<AnimateGradientShader>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
if (_animation == null) {
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
|
|
||||||
return AnimatedBuilder(
|
return AnimatedBuilder(
|
||||||
animation: _animation,
|
animation: _animation!,
|
||||||
builder: (BuildContext context, Widget? child) {
|
builder: (BuildContext context, Widget? child) {
|
||||||
final gradient = LinearGradient(
|
final gradient = LinearGradient(
|
||||||
begin: widget.animateAlignments
|
begin: widget.animateAlignments
|
||||||
? begin.evaluate(_animation)
|
? begin.evaluate(_animation!)
|
||||||
: widget.primaryBegin,
|
: widget.primaryBegin,
|
||||||
end: widget.animateAlignments
|
end: widget.animateAlignments
|
||||||
? end.evaluate(_animation)
|
? end.evaluate(_animation!)
|
||||||
: widget.primaryEnd,
|
: widget.primaryEnd,
|
||||||
colors: _evaluateColors(_animation),
|
colors: _evaluateColors(_animation!),
|
||||||
);
|
);
|
||||||
|
|
||||||
return ShaderMask(
|
return ShaderMask(
|
||||||
@@ -199,21 +203,23 @@ class _AnimateGradientShaderState extends State<AnimateGradientShader>
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _setAnimations() {
|
void _setAnimations() {
|
||||||
_controller = widget.controller ??
|
_controller?.dispose();
|
||||||
|
_controller = (widget.controller ??
|
||||||
AnimationController(
|
AnimationController(
|
||||||
vsync: this,
|
vsync: this,
|
||||||
duration: widget.duration,
|
duration: widget.duration,
|
||||||
)
|
))
|
||||||
..repeat(reverse: widget.reverse);
|
..repeat(reverse: widget.reverse);
|
||||||
|
|
||||||
_animation = CurvedAnimation(
|
_animation = CurvedAnimation(
|
||||||
parent: _controller,
|
parent: _controller!,
|
||||||
curve: Curves.easeInOut,
|
curve: Curves.easeInOut,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_controller.dispose();
|
_controller?.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user