From 8902b99ae77fd0bd8c76185359c2d2993be49f71 Mon Sep 17 00:00:00 2001 From: Prateek Sunal Date: Wed, 5 Mar 2025 17:31:36 +0530 Subject: [PATCH] fix: add buffering indicator for media kit player --- .../ui/viewer/file/video_widget_media_kit_common.dart | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mobile/lib/ui/viewer/file/video_widget_media_kit_common.dart b/mobile/lib/ui/viewer/file/video_widget_media_kit_common.dart index 15c5f5d439..ba4b730206 100644 --- a/mobile/lib/ui/viewer/file/video_widget_media_kit_common.dart +++ b/mobile/lib/ui/viewer/file/video_widget_media_kit_common.dart @@ -5,6 +5,7 @@ import "package:media_kit_video/media_kit_video.dart"; import "package:photos/models/file/file.dart"; import "package:photos/theme/colors.dart"; import "package:photos/theme/ente_theme.dart"; +import "package:photos/ui/common/loading_widget.dart"; import "package:photos/ui/viewer/file/preview_status_widget.dart"; import "package:photos/utils/standalone/date_time.dart"; import "package:photos/utils/standalone/debouncer.dart"; @@ -191,6 +192,8 @@ class PlayPauseButtonMediaKit extends StatefulWidget { class _PlayPauseButtonState extends State { bool _isPlaying = true; late final StreamSubscription? isPlayingStreamSubscription; + late StreamSubscription? _bufferStateSubscription; + late var buffering = widget.controller?.player.state.buffering ?? true; @override void initState() { @@ -202,16 +205,24 @@ class _PlayPauseButtonState extends State { _isPlaying = isPlaying; }); }); + + _bufferStateSubscription = + widget.controller?.player.stream.buffering.listen( + (event) => setState(() => buffering = event), + ); } @override void dispose() { isPlayingStreamSubscription?.cancel(); + _bufferStateSubscription?.cancel(); super.dispose(); } @override Widget build(BuildContext context) { + if (buffering) return const EnteLoadingWidget(); + return GestureDetector( behavior: HitTestBehavior.opaque, onTap: () {