Add time info in playlist page.

This commit is contained in:
stonega 2021-01-24 19:10:09 +08:00
parent 0ad1652448
commit 2dac1a4fce
1 changed files with 48 additions and 48 deletions

View File

@ -5,7 +5,6 @@ import 'package:flutter/services.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:line_icons/line_icons.dart'; import 'package:line_icons/line_icons.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tsacdop/util/pageroute.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
import '../home/home.dart'; import '../home/home.dart';
@ -16,6 +15,7 @@ import '../type/episodebrief.dart';
import '../type/play_histroy.dart'; import '../type/play_histroy.dart';
import '../type/playlist.dart'; import '../type/playlist.dart';
import '../util/extension_helper.dart'; import '../util/extension_helper.dart';
import '../util/pageroute.dart';
import '../widgets/custom_widget.dart'; import '../widgets/custom_widget.dart';
import '../widgets/dismissible_container.dart'; import '../widgets/dismissible_container.dart';
import 'playlist_page.dart'; import 'playlist_page.dart';
@ -113,13 +113,14 @@ class _PlaylistHomeState extends State<PlaylistHome> {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
IconButton( IconButton(
splashRadius: 20,
icon: Icon(Icons.fast_rewind), icon: Icon(Icons.fast_rewind),
onPressed: () { onPressed: () {
if (running) { if (running) {
audio.rewind(); audio.rewind();
} }
}), }),
SizedBox(width: 30), SizedBox(width: 15),
IconButton( IconButton(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
icon: Icon( icon: Icon(
@ -138,69 +139,68 @@ class _PlaylistHomeState extends State<PlaylistHome> {
.playFromLastPosition(); .playFromLastPosition();
} }
}), }),
SizedBox(width: 30), SizedBox(width: 15),
IconButton( IconButton(
splashRadius: 20,
icon: Icon(Icons.fast_forward), icon: Icon(Icons.fast_forward),
onPressed: () { onPressed: () {
if (running) { if (running) {
audio.fastForward(); audio.fastForward();
} }
}) }),
IconButton(
splashRadius: 20,
icon: Icon(Icons.skip_next),
onPressed: () {
if (running) {
audio.playNext();
}
}),
], ],
), ),
SizedBox(height: 10),
if (data.item2) if (data.item2)
Selector<AudioPlayerNotifier, Selector<AudioPlayerNotifier,
Tuple3<bool, double, String>>( Tuple4<bool, int, String, int>>(
selector: (_, audio) => Tuple3( selector: (_, audio) => Tuple4(
audio.buffering, audio.buffering,
(audio.backgroundAudioDuration - audio.backgroundAudioPosition,
audio.backgroundAudioPosition) / audio.remoteErrorMessage,
1000, audio.backgroundAudioDuration),
audio.remoteErrorMessage), builder: (_, info, __) {
builder: (_, data, __) { print(info.item2);
return Padding( return info.item3 != null
padding: const EdgeInsets.symmetric( ? Text(info.item3,
horizontal: 10), style: TextStyle(
child: data.item3 != null color: Color(0xFFFF0000)))
? Text(data.item3, : info.item1
style: const TextStyle( ? Text(
color: Color(0xFFFF0000))) s.buffering,
: data.item1 style: TextStyle(
? Text( color: context.accentColor),
s.buffering, )
style: TextStyle( : Text(
color: '${(info.item2 ~/ 1000).toTime} / ${(info.item4 ~/ 1000).toTime}');
context.accentColor),
)
: Text(
s.timeLeft((data.item2)
.toInt()
.toTime ??
''),
maxLines: 2,
),
);
}, },
) ),
if (!data.item2)
Selector<AudioPlayerNotifier, int>(
selector: (_, audio) => audio.lastPosition,
builder: (_, position, __) {
return Text(
'${(position ~/ 1000).toTime} / ${data.item4.duration.toTime}');
},
),
], ],
)), )),
data.item4 != null data.item4 != null
? ClipRRect( ? ClipRRect(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
child: InkWell( child: SizedBox(
onTap: () { width: 80,
if (running) { height: 80,
context child:
.read<AudioPlayerNotifier>() Image(image: data.item4.avatarImage)),
.playNext();
}
},
child: SizedBox(
width: 80,
height: 80,
child: Image(
image: data.item4.avatarImage)),
),
) )
: Container( : Container(
decoration: BoxDecoration( decoration: BoxDecoration(