fix: stop playing video when navigating to it's album from file info

This commit is contained in:
ashilkn 2024-02-06 17:45:26 +05:30
parent 84f8025864
commit 2e5625cd17
3 changed files with 14 additions and 0 deletions

View file

@ -0,0 +1,3 @@
import "package:photos/events/event.dart";
class PauseVideoEvent extends Event {}

View file

@ -7,6 +7,8 @@ import "package:logging/logging.dart";
import "package:media_kit/media_kit.dart";
import "package:media_kit_video/media_kit_video.dart";
import "package:photos/core/constants.dart";
import "package:photos/core/event_bus.dart";
import "package:photos/events/pause_video_event.dart";
import "package:photos/generated/l10n.dart";
import "package:photos/models/file/extensions/file_props.dart";
import "package:photos/models/file/file.dart";
@ -43,6 +45,7 @@ class _VideoWidgetNewState extends State<VideoWidgetNew>
final _progressNotifier = ValueNotifier<double?>(null);
late StreamSubscription<bool> playingStreamSubscription;
bool _isAppInFG = true;
late StreamSubscription<PauseVideoEvent> pauseVideoSubscription;
@override
void initState() {
@ -83,6 +86,10 @@ class _VideoWidgetNewState extends State<VideoWidgetNew>
widget.playbackCallback!(event);
}
});
pauseVideoSubscription = Bus.instance.on<PauseVideoEvent>().listen((event) {
player.pause();
});
}
@override
@ -96,6 +103,7 @@ class _VideoWidgetNewState extends State<VideoWidgetNew>
@override
void dispose() {
pauseVideoSubscription.cancel();
removeCallBack(widget.file);
_progressNotifier.dispose();
WidgetsBinding.instance.removeObserver(this);

View file

@ -1,6 +1,8 @@
import "package:flutter/material.dart";
import "package:logging/logging.dart";
import "package:photos/core/event_bus.dart";
import "package:photos/db/files_db.dart";
import "package:photos/events/pause_video_event.dart";
import "package:photos/generated/l10n.dart";
import 'package:photos/models/collection/collection.dart';
import 'package:photos/models/collection/collection_items.dart';
@ -87,6 +89,7 @@ class AlbumsItemWidget extends StatelessWidget {
if (c.isHidden()) {
return;
}
Bus.instance.fire(PauseVideoEvent());
routeToPage(
context,
CollectionPage(