Skip to content

Commit bb2f036

Browse files
committed
feat: add system UI hide timer for video playback
1 parent c8ee2c3 commit bb2f036

1 file changed

Lines changed: 22 additions & 6 deletions

File tree

lib/pages/player/iris_player.dart

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class IrisPlayer extends HookWidget {
7575

7676
final controlHideTimer = useRef<Timer?>(null);
7777
final progressHideTimer = useRef<Timer?>(null);
78+
final systemUiHideTimer = useRef<Timer?>(null);
7879

7980
final brightness = useBrightness(isLeftGesture.value);
8081
final volume = useVolume(isRightGesture.value);
@@ -189,6 +190,17 @@ class IrisPlayer extends HookWidget {
189190
);
190191
}
191192

193+
void startSystemUiHideTimer() {
194+
systemUiHideTimer.value = Timer(
195+
const Duration(seconds: 3),
196+
() {
197+
if (!isShowControl.value && mediaType == MediaType.video) {
198+
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
199+
}
200+
},
201+
);
202+
}
203+
192204
void resetControlHideTimer() {
193205
controlHideTimer.value?.cancel();
194206
startControlHideTimer();
@@ -199,6 +211,11 @@ class IrisPlayer extends HookWidget {
199211
startProgressHideTimer();
200212
}
201213

214+
void resetSystemUiHideTimer() {
215+
systemUiHideTimer.value?.cancel();
216+
startSystemUiHideTimer();
217+
}
218+
202219
void showControl() {
203220
isShowControl.value = true;
204221
isHover.value = false;
@@ -247,21 +264,20 @@ class IrisPlayer extends HookWidget {
247264
useEffect(() {
248265
if (isShowControl.value || mediaType != MediaType.video) {
249266
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
267+
systemUiHideTimer.value?.cancel();
250268
} else {
251269
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
252270
}
253271
return;
254-
}, [isShowControl.value, currentPlay?.file.type]);
272+
}, [isShowControl.value, mediaType]);
255273

256274
useEffect(() {
257275
SystemChrome.setSystemUIChangeCallback((value) async {
258276
if (value) {
259-
showControl();
277+
resetSystemUiHideTimer();
260278
}
261279
});
262-
return () {
263-
SystemChrome.setSystemUIChangeCallback(null);
264-
};
280+
return null;
265281
}, []);
266282

267283
void onKeyEvent(KeyEvent event) async {
@@ -1052,7 +1068,7 @@ class IrisPlayer extends HookWidget {
10521068
curve: Curves.easeInOutCubicEmphasized,
10531069
bottom: isShowControl.value || mediaType != MediaType.video
10541070
? 0
1055-
: -96,
1071+
: -128,
10561072
left: 0,
10571073
right: 0,
10581074
child: Align(

0 commit comments

Comments
 (0)