Skip to content

Commit 44e9eb4

Browse files
committed
refactor: split gesture overlay
1 parent 31b45c3 commit 44e9eb4

25 files changed

Lines changed: 329 additions & 275 deletions

lib/hooks/use_gesture.dart

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:flutter/gestures.dart';
22
import 'package:flutter/material.dart';
33
import 'package:flutter_hooks/flutter_hooks.dart';
4+
import 'package:flutter_volume_controller/flutter_volume_controller.dart';
45
import 'package:iris/globals.dart' show speedStops, speedSelectorItemWidth;
56
import 'package:iris/hooks/use_brightness.dart';
67
import 'package:iris/hooks/use_volume.dart';
@@ -101,16 +102,16 @@ Gesture useGesture({
101102
final screenWidth = MediaQuery.sizeOf(context).width;
102103
final tapDx = details.globalPosition.dx;
103104

104-
if (tapDx > screenWidth * 0.7) {
105-
// 右侧 30%
105+
if (tapDx > screenWidth * 0.75) {
106+
// 右侧 25%
106107
showProgress();
107108
player.forward(10);
108-
} else if (tapDx < screenWidth * 0.3) {
109-
// 左侧 30%
109+
} else if (tapDx < screenWidth * 0.25) {
110+
// 左侧 25%
110111
showProgress();
111112
player.backward(10);
112113
} else {
113-
// 中间 40%
114+
// 中间 50%
114115
if (player.isPlaying) {
115116
useAppStore().updateAutoPlay(false);
116117
player.pause();
@@ -259,6 +260,10 @@ Gesture useGesture({
259260
isLeftGesture.value =
260261
startOffset.dx < MediaQuery.sizeOf(context).width / 2;
261262
isRightGesture.value = !isLeftGesture.value;
263+
264+
if (isRightGesture.value) {
265+
FlutterVolumeController.updateShowSystemUI(false);
266+
}
262267
}
263268

264269
final double dy = details.delta.dy;
@@ -287,6 +292,8 @@ Gesture useGesture({
287292
};
288293
isLeftGesture.value = false;
289294
isRightGesture.value = false;
295+
296+
FlutterVolumeController.updateShowSystemUI(true);
290297
}
291298

292299
void onPanEnd(DragEndDetails details) => _resetPanState();

lib/hooks/use_keyboard.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import 'package:flutter_hooks/flutter_hooks.dart';
44
import 'package:iris/globals.dart';
55
import 'package:iris/models/player.dart';
66
import 'package:iris/models/storages/local.dart';
7-
import 'package:iris/pages/player/overlays/history.dart';
8-
import 'package:iris/pages/player/overlays/play_queue.dart';
9-
import 'package:iris/pages/player/overlays/track/subtitle_and_audio_track.dart';
10-
import 'package:iris/pages/settings/settings.dart';
11-
import 'package:iris/pages/storages/storages.dart';
7+
import 'package:iris/widgets/popups/history.dart';
8+
import 'package:iris/widgets/popups/play_queue.dart';
9+
import 'package:iris/widgets/popups/track/subtitle_and_audio_track.dart';
10+
import 'package:iris/widgets/popups/settings/settings.dart';
11+
import 'package:iris/widgets/popups/storages/storages.dart';
1212
import 'package:iris/store/use_app_store.dart';
1313
import 'package:iris/store/use_play_queue_store.dart';
1414
import 'package:iris/store/use_player_ui_store.dart';

lib/hooks/use_volume.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@ ValueNotifier<double?> useVolume(bool isGesture) {
1010
try {
1111
() async {
1212
if (!isGesture) return;
13-
await FlutterVolumeController.updateShowSystemUI(false);
1413
volume.value = await FlutterVolumeController.getVolume();
1514
}();
1615
} catch (e) {
1716
logger('Error getting volume: $e');
1817
}
1918
return () {
2019
volume.value = null;
21-
FlutterVolumeController.updateShowSystemUI(true);
2220
};
2321
}, [isGesture]);
2422

lib/models/storages/storage.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'package:iris/models/storages/local.dart';
77
import 'package:iris/models/storages/webdav.dart';
88
import 'package:iris/utils/platform.dart';
99
import 'package:iris/widgets/popup.dart';
10-
import 'package:iris/pages/storages/storages.dart';
10+
import 'package:iris/widgets/popups/storages/storages.dart';
1111
import 'package:iris/store/use_storage_store.dart';
1212

1313
part 'storage.freezed.dart';

lib/pages/player/control_bar/control_bar.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ import 'package:iris/store/use_player_ui_store.dart';
1212
import 'package:iris/widgets/dialogs/show_open_link_dialog.dart';
1313
import 'package:iris/widgets/dialogs/show_rate_dialog.dart';
1414
import 'package:iris/pages/player/control_bar/control_bar_slider.dart';
15-
import 'package:iris/pages/player/overlays/history.dart';
15+
import 'package:iris/widgets/popups/history.dart';
1616
import 'package:iris/widgets/bottom_sheets/show_open_link_bottom_sheet.dart';
17-
import 'package:iris/pages/settings/settings.dart';
17+
import 'package:iris/widgets/popups/settings/settings.dart';
1818
import 'package:iris/pages/player/control_bar/volume_control.dart';
19-
import 'package:iris/pages/player/overlays/track/subtitle_and_audio_track.dart';
19+
import 'package:iris/widgets/popups/track/subtitle_and_audio_track.dart';
2020
import 'package:iris/store/use_app_store.dart';
2121
import 'package:iris/store/use_play_queue_store.dart';
2222
import 'package:iris/utils/get_localizations.dart';
23-
import 'package:iris/pages/player/overlays/play_queue.dart';
23+
import 'package:iris/widgets/popups/play_queue.dart';
2424
import 'package:iris/utils/platform.dart';
2525
import 'package:iris/widgets/popup.dart';
26-
import 'package:iris/pages/storages/storages.dart';
26+
import 'package:iris/widgets/popups/storages/storages.dart';
2727
import 'package:provider/provider.dart';
2828
import 'package:window_manager/window_manager.dart';
2929

lib/pages/player/control_bar/control_bar_slider.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ import 'package:provider/provider.dart';
1010
class ControlBarSlider extends HookWidget {
1111
const ControlBarSlider({
1212
super.key,
13-
required this.showControl,
13+
this.showControl,
1414
this.disabled = false,
1515
this.color,
1616
});
1717

18-
final void Function() showControl;
18+
final void Function()? showControl;
1919
final bool disabled;
2020
final Color? color;
2121

@@ -92,7 +92,7 @@ class ControlBarSlider extends HookWidget {
9292
onChanged: disabled
9393
? null
9494
: (value) {
95-
showControl();
95+
showControl?.call();
9696
seek(Duration(milliseconds: value.toInt()));
9797
},
9898
onChangeStart: disabled

0 commit comments

Comments
 (0)