@@ -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