mirror of
https://github.com/stonega/tsacdop
synced 2025-02-15 02:50:35 +01:00
Add time info in playlist page.
This commit is contained in:
parent
0ad1652448
commit
2dac1a4fce
@ -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(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user