79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
1
|
|
f946f1ce
吴启风
feat:小鹅通入口图片定时动画
|
2
3
|
import 'dart:async';
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
4
5
6
7
8
9
10
11
12
13
14
|
import 'package:flutter/cupertino.dart';
import 'package:wow_english/common/extension/string_extension.dart';
///带左右摇晃的wow封面
class ShakeImage extends StatefulWidget {
const ShakeImage({super.key});
@override
_ShakeImageState createState() => _ShakeImageState();
}
|
f946f1ce
吴启风
feat:小鹅通入口图片定时动画
|
15
16
|
class _ShakeImageState extends State<ShakeImage> with SingleTickerProviderStateMixin,
WidgetsBindingObserver {
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
17
18
|
late AnimationController _controller;
late Animation<double> _animation;
|
f946f1ce
吴启风
feat:小鹅通入口图片定时动画
|
19
|
late Timer _timer;
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
20
21
22
23
|
@override
void initState() {
super.initState();
|
f946f1ce
吴启风
feat:小鹅通入口图片定时动画
|
24
25
|
WidgetsBinding.instance.addObserver(this);
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
_controller = AnimationController(
duration: const Duration(seconds: 2),
vsync: this,
);
_animation = TweenSequence([
TweenSequenceItem(tween: Tween(begin: 0.0, end: 0.05).chain(CurveTween(curve: Curves.easeInOut)), weight: 1),
TweenSequenceItem(tween: Tween(begin: 0.05, end: -0.1).chain(CurveTween(curve: Curves.easeInOut)), weight: 1),
TweenSequenceItem(tween: Tween(begin: -0.1, end: 0.2).chain(CurveTween(curve: Curves.easeInOut)), weight: 1),
TweenSequenceItem(tween: Tween(begin: 0.2, end: -0.2).chain(CurveTween(curve: Curves.easeInOut)), weight: 1),
TweenSequenceItem(tween: Tween(begin: -0.2, end: 0.1).chain(CurveTween(curve: Curves.easeInOut)), weight: 1),
TweenSequenceItem(tween: Tween(begin: 0.1, end: -0.05).chain(CurveTween(curve: Curves.easeInOut)), weight: 1),
TweenSequenceItem(tween: Tween(begin: -0.05, end: 0.0).chain(CurveTween(curve: Curves.easeInOut)), weight: 1),
]).animate(_controller);
|
0e314ad5
吴启风
feat:开屏页播放背景音乐wel...
|
41
|
Timer(const Duration(seconds: 1), () {
|
f946f1ce
吴启风
feat:小鹅通入口图片定时动画
|
42
|
_controller.forward(from: 0.0);
|
0e314ad5
吴启风
feat:开屏页播放背景音乐wel...
|
43
44
45
|
_timer = Timer.periodic(const Duration(seconds: 4), (Timer timer) {
_controller.forward(from: 0.0);
});
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
46
47
48
49
50
51
52
53
54
55
56
57
|
});
// _controller.addStatusListener((status) {
// if (status == AnimationStatus.completed) {
// _controller.reverse();
// } else if (status == AnimationStatus.dismissed) {
// _controller.forward();
// }
// });
}
@override
|
f946f1ce
吴启风
feat:小鹅通入口图片定时动画
|
58
59
60
61
62
63
64
65
66
|
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.paused) {
_controller.stop();
} else if (state == AppLifecycleState.resumed) {
_controller.forward();
}
}
@override
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
67
|
void dispose() {
|
f946f1ce
吴启风
feat:小鹅通入口图片定时动画
|
68
|
WidgetsBinding.instance.removeObserver(this);
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
69
|
_controller.dispose();
|
f946f1ce
吴启风
feat:小鹅通入口图片定时动画
|
70
|
_timer.cancel();
|
79de0824
吴启风
feat:小鹅通入口图片增加摇摆动画
|
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
super.dispose();
}
@override
Widget build(BuildContext context) {
return Center(
child: AnimatedBuilder(
animation: _animation,
builder: (context, child) {
return Transform.rotate(
angle: _animation.value,
child: child,
);
},
child: Image.asset('xe_shop'.assetPng,
width: 153),
),
);
}
}
|