From b8e9786f4d3a16a9b039ce43f91e31e2ed3f1a24 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sun, 16 Mar 2025 18:05:24 +0100 Subject: [PATCH] minor fixes --- lib/widgets/collection/app_bar.dart | 2 +- .../viewer/visual/controller_mixin.dart | 65 ++++++++++--------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/lib/widgets/collection/app_bar.dart b/lib/widgets/collection/app_bar.dart index 96560f7c9..f0a33017e 100644 --- a/lib/widgets/collection/app_bar.dart +++ b/lib/widgets/collection/app_bar.dart @@ -626,7 +626,7 @@ class _CollectionAppBarState extends State with SingleTickerPr void _onQueryFocusRequest() => _queryBarFocusNode.requestFocus(); void _updateStatusBarHeight() { - if (!context.mounted) { + if (!mounted) { return; } _statusBarHeight = MediaQuery.paddingOf(context).top; diff --git a/lib/widgets/viewer/visual/controller_mixin.dart b/lib/widgets/viewer/visual/controller_mixin.dart index dc61282e3..c521144da 100644 --- a/lib/widgets/viewer/visual/controller_mixin.dart +++ b/lib/widgets/viewer/visual/controller_mixin.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:math'; import 'package:aves/app_mode.dart'; +import 'package:aves/model/device.dart'; import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/extensions/multipage.dart'; import 'package:aves/model/entry/extensions/props.dart'; @@ -227,40 +228,40 @@ mixin EntryViewControllerMixin on State { static const _pipRatioMin = Rational(18, 43); Future updatePictureInPicture(BuildContext context) async { - if (context.mounted) { - if (settings.videoBackgroundMode == VideoBackgroundMode.pip) { - final playingController = context.read().getPlayingController(); - if (playingController != null) { - final entrySize = playingController.entry.displaySize; - final entryAspectRatio = entrySize.aspectRatio; - final Rational pipAspectRatio; - if (entryAspectRatio > _pipRatioMax.aspectRatio) { - pipAspectRatio = _pipRatioMax; - } else if (entryAspectRatio < _pipRatioMin.aspectRatio) { - pipAspectRatio = _pipRatioMin; - } else { - pipAspectRatio = Rational(entrySize.width.round(), entrySize.height.round()); - } + if (!device.supportPictureInPicture) return; - final viewSize = MediaQuery.sizeOf(context) * MediaQuery.devicePixelRatioOf(context); - final fittedSize = applyBoxFit(BoxFit.contain, entrySize, viewSize).destination; - final sourceRectHint = Rectangle( - ((viewSize.width - fittedSize.width) / 2).round(), - ((viewSize.height - fittedSize.height) / 2).round(), - fittedSize.width.round(), - fittedSize.height.round(), - ); + if (context.mounted && settings.videoBackgroundMode == VideoBackgroundMode.pip) { + final playingController = context.read().getPlayingController(); + if (playingController != null) { + final entrySize = playingController.entry.displaySize; + final entryAspectRatio = entrySize.aspectRatio; + final Rational pipAspectRatio; + if (entryAspectRatio > _pipRatioMax.aspectRatio) { + pipAspectRatio = _pipRatioMax; + } else if (entryAspectRatio < _pipRatioMin.aspectRatio) { + pipAspectRatio = _pipRatioMin; + } else { + pipAspectRatio = Rational(entrySize.width.round(), entrySize.height.round()); + } - try { - final status = await Floating().enable(OnLeavePiP( - aspectRatio: pipAspectRatio, - sourceRectHint: sourceRectHint, - )); - debugPrint('Enabled picture-in-picture with status=$status'); - return; - } on PlatformException catch (e, stack) { - await reportService.recordError(e, stack); - } + final viewSize = MediaQuery.sizeOf(context) * MediaQuery.devicePixelRatioOf(context); + final fittedSize = applyBoxFit(BoxFit.contain, entrySize, viewSize).destination; + final sourceRectHint = Rectangle( + ((viewSize.width - fittedSize.width) / 2).round(), + ((viewSize.height - fittedSize.height) / 2).round(), + fittedSize.width.round(), + fittedSize.height.round(), + ); + + try { + final status = await Floating().enable(OnLeavePiP( + aspectRatio: pipAspectRatio, + sourceRectHint: sourceRectHint, + )); + debugPrint('Enabled picture-in-picture with status=$status'); + return; + } on PlatformException catch (e, stack) { + await reportService.recordError(e, stack); } } }