This repository has been archived by the owner on Jan 25, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 849
/
windows_task_bar.dart
81 lines (74 loc) · 2.41 KB
/
windows_task_bar.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:quiet/extension.dart';
import 'package:quiet/providers/player_provider.dart';
import 'package:windows_taskbar/windows_taskbar.dart';
import '../../../media/tracks/tracks_player.dart';
class WindowsTaskBar extends StatelessWidget {
const WindowsTaskBar({Key? key, required this.child}) : super(key: key);
final Widget child;
@override
Widget build(BuildContext context) {
if (defaultTargetPlatform != TargetPlatform.windows) {
return child;
}
return _WindowsTaskBar(child: child);
}
}
class _WindowsTaskBar extends ConsumerWidget {
const _WindowsTaskBar({
Key? key,
required this.child,
}) : super(key: key);
final Widget child;
@override
Widget build(BuildContext context, WidgetRef ref) {
ref.listen<TracksPlayerState>(playerStateProvider, (previous, next) {
if (next.playingTrack == null) {
WindowsTaskbar.resetThumbnailToolbar();
} else {
WindowsTaskbar.setThumbnailToolbar([
ThumbnailToolbarButton(
ThumbnailToolbarAssetIcon(
'assets/icons/baseline_skip_previous_white_24dp.ico'),
context.strings.skipToPrevious,
() {
ref.read(playerProvider).skipToPrevious();
},
mode: next.playingList.isFM
? ThumbnailToolbarButtonMode.disabled
: 0x0,
),
if (next.isPlaying)
ThumbnailToolbarButton(
ThumbnailToolbarAssetIcon(
'assets/icons/baseline_pause_white_24dp.ico'),
context.strings.pause,
() {
ref.read(playerProvider).pause();
},
)
else
ThumbnailToolbarButton(
ThumbnailToolbarAssetIcon(
'assets/icons/baseline_play_arrow_white_24dp.ico'),
context.strings.play,
() {
ref.read(playerProvider).play();
},
),
ThumbnailToolbarButton(
ThumbnailToolbarAssetIcon(
'assets/icons/baseline_skip_next_white_24dp.ico'),
context.strings.skipToNext,
() {
ref.read(playerProvider).skipToNext();
},
),
]);
}
});
return child;
}
}