|
1 | 1 | part of 'music_player.dart'; |
2 | 2 |
|
3 | | -class TopMusicPlayer extends StatelessWidget { |
| 3 | +class TopMusicPlayer extends StatefulWidget { |
| 4 | + @override |
| 5 | + State<TopMusicPlayer> createState() => _TopMusicPlayerState(); |
| 6 | +} |
| 7 | + |
| 8 | +class _TopMusicPlayerState extends State<TopMusicPlayer> |
| 9 | + with TickerProviderStateMixin { |
| 10 | + AnimationController _controller; |
| 11 | + Tween<double> _tween = Tween(begin: 0.75, end: 1); |
| 12 | + |
| 13 | + @override |
| 14 | + void initState() { |
| 15 | + super.initState(); |
| 16 | + _controller = AnimationController( |
| 17 | + duration: const Duration(seconds: 1), vsync: this); |
| 18 | + _controller.repeat(reverse: true); |
| 19 | + } |
| 20 | + |
| 21 | + @override |
| 22 | + void dispose() { |
| 23 | + _controller.dispose(); |
| 24 | + super.dispose(); |
| 25 | + } |
| 26 | + |
4 | 27 | @override |
5 | 28 | Widget build(BuildContext context) { |
6 | 29 | Size size = MediaQuery.of(context).size; |
@@ -43,13 +66,40 @@ class TopMusicPlayer extends StatelessWidget { |
43 | 66 | ], |
44 | 67 | ), |
45 | 68 | Spacer(), |
46 | | - CircleAvatar( |
47 | | - radius: 125.5, |
48 | | - backgroundColor: Theme.of(context).focusColor.withOpacity(0.25), |
49 | | - child: CircleAvatar( |
50 | | - radius: 107.5, |
51 | | - backgroundImage: |
52 | | - NetworkImage(GlobalParameters.currentSong.value.imageUrl), |
| 69 | + Container( |
| 70 | + alignment: Alignment.center, |
| 71 | + height: 250, |
| 72 | + width: 250, |
| 73 | + child: Stack( |
| 74 | + children: [ |
| 75 | + // ScaleTransition( |
| 76 | + // scale: _tween.animate( |
| 77 | + // CurvedAnimation( |
| 78 | + // parent: _controller, curve: Curves.elasticOut), |
| 79 | + // ), |
| 80 | + // child: Container( |
| 81 | + // height: 250, |
| 82 | + // width: 250, |
| 83 | + // child: Container( |
| 84 | + // height: 250, |
| 85 | + // width: 250, |
| 86 | + // decoration: BoxDecoration( |
| 87 | + // color: Theme.of(context).focusColor.withOpacity(0.25), |
| 88 | + // shape: BoxShape.circle, |
| 89 | + // ), |
| 90 | + // ), |
| 91 | + // ), |
| 92 | + // ), |
| 93 | + Container( |
| 94 | + alignment: Alignment.center, |
| 95 | + child: CircleAvatar( |
| 96 | + radius: 107.5, |
| 97 | + backgroundColor: Theme.of(context).focusColor, |
| 98 | + backgroundImage: NetworkImage( |
| 99 | + GlobalParameters.currentSong.value.imageUrl), |
| 100 | + ), |
| 101 | + ), |
| 102 | + ], |
53 | 103 | ), |
54 | 104 | ), |
55 | 105 | SizedBox(height: 30), |
@@ -111,14 +161,14 @@ class TopMusicPlayer extends StatelessWidget { |
111 | 161 | Padding( |
112 | 162 | padding: const EdgeInsets.only(top: 10), |
113 | 163 | child: FutureBuilder( |
114 | | - future: GlobalParameters.currentSong.value.generateColors(), |
115 | | - builder: (context, snapshot) { |
116 | | - return SongSlider( |
117 | | - firstColor: GlobalParameters.currentSong.value.firstColor, |
118 | | - secondColor: GlobalParameters.currentSong.value.secondColor, |
119 | | - ); |
120 | | - } |
121 | | - ), |
| 164 | + future: GlobalParameters.currentSong.value.generateColors(), |
| 165 | + builder: (context, snapshot) { |
| 166 | + return SongSlider( |
| 167 | + firstColor: GlobalParameters.currentSong.value.firstColor, |
| 168 | + secondColor: |
| 169 | + GlobalParameters.currentSong.value.secondColor, |
| 170 | + ); |
| 171 | + }), |
122 | 172 | ), |
123 | 173 | ValueListenableBuilder( |
124 | 174 | valueListenable: GlobalParameters.songSeconds, |
|
0 commit comments