diff --git a/lib/widgets/events/event_player_desktop.dart b/lib/widgets/events/event_player_desktop.dart index 9168629b..8d9e1be5 100644 --- a/lib/widgets/events/event_player_desktop.dart +++ b/lib/widgets/events/event_player_desktop.dart @@ -122,7 +122,7 @@ class _EventPlayerDesktopState extends State { playingSubscription.cancel(); bufferSubscription.cancel(); focusNode.dispose(); - videoController.dispose(); + if (widget.player == null) videoController.dispose(); super.dispose(); } @@ -140,11 +140,14 @@ class _EventPlayerDesktopState extends State { debugPrint(mediaUrl); if (mediaUrl != videoController.dataSource) { - videoController - ..setDataSource(mediaUrl) - ..setVolume(volume) - ..setSpeed(speed); + debugPrint( + 'Setting data source from ${videoController.dataSource} to $mediaUrl', + ); + videoController.setDataSource(mediaUrl); } + videoController + ..setVolume(volume) + ..setSpeed(speed); } @override diff --git a/lib/widgets/events/event_player_mobile.dart b/lib/widgets/events/event_player_mobile.dart index 80cf366d..ebfff5c2 100644 --- a/lib/widgets/events/event_player_mobile.dart +++ b/lib/widgets/events/event_player_mobile.dart @@ -87,9 +87,16 @@ class __EventPlayerMobileState extends State<_EventPlayerMobile> { : widget.event.mediaURL.toString(); debugPrint(mediaUrl); - videoController - ..setDataSource(mediaUrl) - ..setSpeed(1.0); + if (videoController.dataSource != mediaUrl) { + debugPrint( + 'Setting data source from ${videoController.dataSource} to $mediaUrl', + ); + videoController + ..setDataSource(mediaUrl) + ..setSpeed(1.0); + } else { + videoController.setSpeed(1.0); + } super.didChangeDependencies(); } diff --git a/lib/widgets/events_timeline/desktop/timeline_card.dart b/lib/widgets/events_timeline/desktop/timeline_card.dart index d837cfa3..4d02ed59 100644 --- a/lib/widgets/events_timeline/desktop/timeline_card.dart +++ b/lib/widgets/events_timeline/desktop/timeline_card.dart @@ -160,13 +160,14 @@ class _TimelineCardState extends State { top: 36.0, right: 0.0, child: Text( - 'debug buffering: ' + 'buffer: ' '${(widget.tile.videoController.currentBuffer.inMilliseconds / widget.tile.videoController.duration.inMilliseconds).toStringAsPrecision(2)}' '\n${widget.tile.videoController.currentBuffer.humanReadableCompact(context)}', style: theme.textTheme.labelLarge!.copyWith( color: Colors.white, shadows: outlinedText(strokeWidth: 0.75), ), + textAlign: TextAlign.end, ), ), PositionedDirectional( @@ -228,11 +229,19 @@ class _TimelineCardState extends State { ), SquaredIconButton( tooltip: loc.showFullscreenCamera, - onPressed: () { - Navigator.of(context).pushNamed( + onPressed: () async { + final isPlaying = widget.timeline.isPlaying; + if (isPlaying) widget.timeline.stop(); + + await Navigator.of(context).pushNamed( '/events', - arguments: {'event': currentEvent.event}, + arguments: { + 'event': currentEvent.event, + 'videoPlayer': widget.tile.videoController, + }, ); + + if (isPlaying) widget.timeline.play(); }, icon: Icon( Icons.fullscreen,