From f946f1ce88be2be0383ccc2509ba8e9c253e160b Mon Sep 17 00:00:00 2001 From: wuqifeng <540416539@qq.com> Date: Thu, 18 Jul 2024 15:07:00 +0800 Subject: [PATCH] feat:小鹅通入口图片定时动画 --- lib/pages/home/widgets/ShakeImage.dart | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/pages/home/widgets/ShakeImage.dart b/lib/pages/home/widgets/ShakeImage.dart index f2df578..c8f4541 100644 --- a/lib/pages/home/widgets/ShakeImage.dart +++ b/lib/pages/home/widgets/ShakeImage.dart @@ -1,4 +1,6 @@ +import 'dart:async'; + import 'package:flutter/cupertino.dart'; import 'package:wow_english/common/extension/string_extension.dart'; @@ -10,13 +12,17 @@ class ShakeImage extends StatefulWidget { _ShakeImageState createState() => _ShakeImageState(); } -class _ShakeImageState extends State with SingleTickerProviderStateMixin { +class _ShakeImageState extends State with SingleTickerProviderStateMixin, + WidgetsBindingObserver { late AnimationController _controller; late Animation _animation; + late Timer _timer; @override void initState() { super.initState(); + WidgetsBinding.instance.addObserver(this); + _controller = AnimationController( duration: const Duration(seconds: 2), vsync: this, @@ -32,8 +38,9 @@ class _ShakeImageState extends State with SingleTickerProviderStateM TweenSequenceItem(tween: Tween(begin: -0.05, end: 0.0).chain(CurveTween(curve: Curves.easeInOut)), weight: 1), ]).animate(_controller); - Future.delayed(const Duration(seconds: 1), () { - _controller.forward(); + _controller.forward(from: 0.0); + _timer = Timer.periodic(const Duration(seconds: 4), (Timer timer) { + _controller.forward(from: 0.0); }); // _controller.addStatusListener((status) { @@ -46,8 +53,19 @@ class _ShakeImageState extends State with SingleTickerProviderStateM } @override + void didChangeAppLifecycleState(AppLifecycleState state) { + if (state == AppLifecycleState.paused) { + _controller.stop(); + } else if (state == AppLifecycleState.resumed) { + _controller.forward(); + } + } + + @override void dispose() { + WidgetsBinding.instance.removeObserver(this); _controller.dispose(); + _timer.cancel(); super.dispose(); } -- libgit2 0.22.2