From cc3b4f661bcb37f75ef52263c3c14f89c7cfb31d Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sun, 15 Sep 2024 23:50:55 +0200 Subject: [PATCH] route transition duration renaming --- lib/theme/durations.dart | 9 +++++---- lib/widgets/collection/app_bar.dart | 2 +- lib/widgets/collection/entry_set_action_delegate.dart | 2 +- lib/widgets/common/action_mixins/feedback.dart | 2 +- lib/widgets/common/search/page.dart | 2 +- lib/widgets/dialogs/pick_dialogs/album_pick_page.dart | 4 ++-- lib/widgets/dialogs/pick_dialogs/location_pick_page.dart | 2 +- lib/widgets/dialogs/selection_dialogs/common.dart | 2 +- .../filter_grids/common/action_delegates/album_set.dart | 2 +- .../filter_grids/common/action_delegates/chip_set.dart | 2 +- lib/widgets/map/map_page.dart | 4 ++-- lib/widgets/navigation/drawer/app_drawer.dart | 2 +- lib/widgets/settings/common/tiles.dart | 2 +- lib/widgets/settings/language/locale_tile.dart | 2 +- .../settings/privacy/file_picker/file_picker_page.dart | 2 +- lib/widgets/settings/privacy/hidden_items_page.dart | 2 +- lib/widgets/stats/stats_page.dart | 2 +- lib/widgets/viewer/action/entry_action_delegate.dart | 2 +- lib/widgets/viewer/info/info_page.dart | 4 ++-- 19 files changed, 26 insertions(+), 25 deletions(-) diff --git a/lib/theme/durations.dart b/lib/theme/durations.dart index 8e03c5a52..5e9c36d8b 100644 --- a/lib/theme/durations.dart +++ b/lib/theme/durations.dart @@ -5,10 +5,11 @@ class ADurations { static const transitionMarginMillis = 20; // page transition duration also available via `ModalRoute.of(context)!.transitionDuration * timeDilation` - static const pageTransitionAnimation = Duration(milliseconds: 300 + transitionMarginMillis); // ref `transitionDuration` used in `MaterialRouteTransitionMixin` - static const dialogTransitionAnimation = Duration(milliseconds: 150 + transitionMarginMillis); // ref `transitionDuration` used in `DialogRoute` - static const drawerTransitionAnimation = Duration(milliseconds: 246 + transitionMarginMillis); // ref `_kBaseSettleDuration` used in `DrawerControllerState` - static const toggleableTransitionAnimation = Duration(milliseconds: 200 + transitionMarginMillis); // ref `_kToggleDuration` used in `ToggleableStateMixin` + static const pageTransitionExact = Duration(milliseconds: 300); // ref `transitionDuration` used in `MaterialRouteTransitionMixin` + static const pageTransitionLoose = Duration(milliseconds: 300 + transitionMarginMillis); // ref `transitionDuration` used in `MaterialRouteTransitionMixin` + static const dialogTransitionLoose = Duration(milliseconds: 150 + transitionMarginMillis); // ref `transitionDuration` used in `DialogRoute` + static const drawerTransitionLoose = Duration(milliseconds: 246 + transitionMarginMillis); // ref `_kBaseSettleDuration` used in `DrawerControllerState` + static const toggleableTransitionLoose = Duration(milliseconds: 200 + transitionMarginMillis); // ref `_kToggleDuration` used in `ToggleableStateMixin` // common animations static const sweeperOpacityAnimation = Duration(milliseconds: 150); diff --git a/lib/widgets/collection/app_bar.dart b/lib/widgets/collection/app_bar.dart index 55a1f56ec..31d53e01c 100644 --- a/lib/widgets/collection/app_bar.dart +++ b/lib/widgets/collection/app_bar.dart @@ -691,7 +691,7 @@ class _CollectionAppBarState extends State with SingleTickerPr routeSettings: const RouteSettings(name: TileViewDialog.routeName), ); // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionLoose * timeDilation); if (value != null && initialValue != value) { settings.collectionSortFactor = value.$1!; settings.collectionSectionFactor = value.$2!; diff --git a/lib/widgets/collection/entry_set_action_delegate.dart b/lib/widgets/collection/entry_set_action_delegate.dart index 11edabc8c..e9cf454bd 100644 --- a/lib/widgets/collection/entry_set_action_delegate.dart +++ b/lib/widgets/collection/entry_set_action_delegate.dart @@ -510,7 +510,7 @@ class EntrySetActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAware if (confirmed == null || !confirmed) return null; // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionLoose * timeDilation); return supported; } diff --git a/lib/widgets/common/action_mixins/feedback.dart b/lib/widgets/common/action_mixins/feedback.dart index 48a0a8cf5..6eaa01a99 100644 --- a/lib/widgets/common/action_mixins/feedback.dart +++ b/lib/widgets/common/action_mixins/feedback.dart @@ -81,7 +81,7 @@ mixin FeedbackMixin { final margin = (marginComputer ?? snackBarMarginDefault).call(context); return AnimatedPadding( padding: margin, - duration: ADurations.pageTransitionAnimation, + duration: ADurations.pageTransitionLoose, child: child, ); }, diff --git a/lib/widgets/common/search/page.dart b/lib/widgets/common/search/page.dart index 28c8d04d9..59990c644 100644 --- a/lib/widgets/common/search/page.dart +++ b/lib/widgets/common/search/page.dart @@ -76,7 +76,7 @@ class _SearchPageState extends State { return; } widget.animation.removeStatusListener(_onAnimationStatusChanged); - Future.delayed(ADurations.pageTransitionAnimation * timeDilation).then((_) { + Future.delayed(ADurations.pageTransitionLoose * timeDilation).then((_) { if (!mounted) return; _searchFieldFocusNode.requestFocus(); }); diff --git a/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart b/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart index ae7d7cc7e..1b2fc2f2d 100644 --- a/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart +++ b/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart @@ -248,7 +248,7 @@ class _AlbumPickPageState extends State<_AlbumPickPage> { if (directory == null) return; // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionLoose * timeDilation); _pickAlbum(directory); } @@ -270,7 +270,7 @@ class _AlbumPickPageState extends State<_AlbumPickPage> { if (details == null) return; // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionLoose * timeDilation); await vaults.create(details); _pickAlbum(details.path); diff --git a/lib/widgets/dialogs/pick_dialogs/location_pick_page.dart b/lib/widgets/dialogs/pick_dialogs/location_pick_page.dart index 4c8d13d1e..281da792b 100644 --- a/lib/widgets/dialogs/pick_dialogs/location_pick_page.dart +++ b/lib/widgets/dialogs/pick_dialogs/location_pick_page.dart @@ -77,7 +77,7 @@ class _ContentState extends State<_Content> with SingleTickerProviderStateMixin if (ExtraEntryMapStyle.isHeavy(settings.mapStyle)) { _isPageAnimatingNotifier = ValueNotifier(true); - Future.delayed(ADurations.pageTransitionAnimation * timeDilation).then((_) { + Future.delayed(ADurations.pageTransitionLoose * timeDilation).then((_) { if (!mounted) return; _isPageAnimatingNotifier.value = false; }); diff --git a/lib/widgets/dialogs/selection_dialogs/common.dart b/lib/widgets/dialogs/selection_dialogs/common.dart index 7fa8b4708..2f702780b 100644 --- a/lib/widgets/dialogs/selection_dialogs/common.dart +++ b/lib/widgets/dialogs/selection_dialogs/common.dart @@ -14,7 +14,7 @@ Future showSelectionDialog({ routeSettings: const RouteSettings(name: AvesSingleSelectionDialog.routeName), ); // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionLoose * timeDilation); if (value != null) { onSelection(value); } diff --git a/lib/widgets/filter_grids/common/action_delegates/album_set.dart b/lib/widgets/filter_grids/common/action_delegates/album_set.dart index 4aa4ca671..967750ae3 100644 --- a/lib/widgets/filter_grids/common/action_delegates/album_set.dart +++ b/lib/widgets/filter_grids/common/action_delegates/album_set.dart @@ -187,7 +187,7 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate with routeSettings: const RouteSettings(name: TileViewDialog.routeName), ); // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionLoose * timeDilation); if (value != null && initialValue != value) { sortFactor = value.$1!; settings.albumGroupFactor = value.$2!; diff --git a/lib/widgets/filter_grids/common/action_delegates/chip_set.dart b/lib/widgets/filter_grids/common/action_delegates/chip_set.dart index b622a5033..4fa0702a4 100644 --- a/lib/widgets/filter_grids/common/action_delegates/chip_set.dart +++ b/lib/widgets/filter_grids/common/action_delegates/chip_set.dart @@ -250,7 +250,7 @@ abstract class ChipSetActionDelegate with FeedbackMi routeSettings: const RouteSettings(name: TileViewDialog.routeName), ); // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionLoose * timeDilation); if (value != null && initialValue != value) { sortFactor = value.$1!; tileLayout = value.$3!; diff --git a/lib/widgets/map/map_page.dart b/lib/widgets/map/map_page.dart index 30796f1bf..28259110a 100644 --- a/lib/widgets/map/map_page.dart +++ b/lib/widgets/map/map_page.dart @@ -118,7 +118,7 @@ class _ContentState extends State<_Content> with SingleTickerProviderStateMixin if (ExtraEntryMapStyle.isHeavy(settings.mapStyle)) { _isPageAnimatingNotifier.value = true; - Future.delayed(ADurations.pageTransitionAnimation * timeDilation).then((_) { + Future.delayed(ADurations.pageTransitionLoose * timeDilation).then((_) { if (!mounted) return; _isPageAnimatingNotifier.value = false; }); @@ -142,7 +142,7 @@ class _ContentState extends State<_Content> with SingleTickerProviderStateMixin _subscriptions.add(openingCollection.source.eventBus.on().listen((e) => _updateRegionCollection())); _selectedIndexNotifier.addListener(_onThumbnailIndexChanged); - Future.delayed(ADurations.pageTransitionAnimation * timeDilation + const Duration(seconds: 1), () { + Future.delayed(ADurations.pageTransitionLoose * timeDilation + const Duration(seconds: 1), () { final regionEntries = regionCollection?.sortedEntries ?? []; final initialEntry = widget.initialEntry ?? regionEntries.firstOrNull; if (initialEntry != null) { diff --git a/lib/widgets/navigation/drawer/app_drawer.dart b/lib/widgets/navigation/drawer/app_drawer.dart index 8ecb4d440..3bc6ad387 100644 --- a/lib/widgets/navigation/drawer/app_drawer.dart +++ b/lib/widgets/navigation/drawer/app_drawer.dart @@ -115,7 +115,7 @@ class _AppDrawerState extends State { Future goTo(String routeName, WidgetBuilder pageBuilder) async { Navigator.maybeOf(context)?.pop(); - await Future.delayed(ADurations.drawerTransitionAnimation); + await Future.delayed(ADurations.drawerTransitionLoose); await Navigator.maybeOf(context)?.push(MaterialPageRoute( settings: RouteSettings(name: routeName), builder: pageBuilder, diff --git a/lib/widgets/settings/common/tiles.dart b/lib/widgets/settings/common/tiles.dart index 0422ce3d4..b701222fb 100644 --- a/lib/widgets/settings/common/tiles.dart +++ b/lib/widgets/settings/common/tiles.dart @@ -68,7 +68,7 @@ class SettingsSwitchListTile extends StatelessWidget { Expanded(child: titleWidget), AnimatedOpacity( opacity: current ? 1 : disabledOpacity, - duration: ADurations.toggleableTransitionAnimation, + duration: ADurations.toggleableTransitionLoose, child: trailing, ), ], diff --git a/lib/widgets/settings/language/locale_tile.dart b/lib/widgets/settings/language/locale_tile.dart index fa0b2fa49..4a2e50876 100644 --- a/lib/widgets/settings/language/locale_tile.dart +++ b/lib/widgets/settings/language/locale_tile.dart @@ -32,7 +32,7 @@ class LocaleTile extends StatelessWidget { ), ); // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.pageTransitionAnimation * timeDilation); + await Future.delayed(ADurations.pageTransitionLoose * timeDilation); if (value != null) { settings.locale = value == systemLocaleOption ? null : value; } diff --git a/lib/widgets/settings/privacy/file_picker/file_picker_page.dart b/lib/widgets/settings/privacy/file_picker/file_picker_page.dart index 32c8871cb..ab0088074 100644 --- a/lib/widgets/settings/privacy/file_picker/file_picker_page.dart +++ b/lib/widgets/settings/privacy/file_picker/file_picker_page.dart @@ -182,7 +182,7 @@ class _FilePickerPageState extends State { title: Text(v.getDescription(context)), onTap: () async { Navigator.maybeOf(context)?.pop(); - await Future.delayed(ADurations.drawerTransitionAnimation); + await Future.delayed(ADurations.drawerTransitionLoose); _goTo(v.path); setState(() {}); }, diff --git a/lib/widgets/settings/privacy/hidden_items_page.dart b/lib/widgets/settings/privacy/hidden_items_page.dart index 3a5e88619..35b8762d1 100644 --- a/lib/widgets/settings/privacy/hidden_items_page.dart +++ b/lib/widgets/settings/privacy/hidden_items_page.dart @@ -185,7 +185,7 @@ class _HiddenPaths extends StatelessWidget { ), ); // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.pageTransitionAnimation * timeDilation); + await Future.delayed(ADurations.pageTransitionLoose * timeDilation); if (path != null && path.isNotEmpty) { settings.changeFilterVisibility({PathFilter(path)}, false); } diff --git a/lib/widgets/stats/stats_page.dart b/lib/widgets/stats/stats_page.dart index feb69e5dd..843460915 100644 --- a/lib/widgets/stats/stats_page.dart +++ b/lib/widgets/stats/stats_page.dart @@ -68,7 +68,7 @@ class _StatsPageState extends State with FeedbackMixin, VaultAwareMix super.initState(); _isPageAnimatingNotifier = ValueNotifier(true); - Future.delayed(ADurations.pageTransitionAnimation * timeDilation).then((_) { + Future.delayed(ADurations.pageTransitionLoose * timeDilation).then((_) { if (!mounted) return; _isPageAnimatingNotifier.value = false; }); diff --git a/lib/widgets/viewer/action/entry_action_delegate.dart b/lib/widgets/viewer/action/entry_action_delegate.dart index 5ee6e98ca..76fdb546f 100644 --- a/lib/widgets/viewer/action/entry_action_delegate.dart +++ b/lib/widgets/viewer/action/entry_action_delegate.dart @@ -475,7 +475,7 @@ class EntryActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAwareMix if (newName == null || newName.isEmpty || newName == targetEntry.filenameWithoutExtension) return; // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionLoose * timeDilation); await rename( context, entriesToNewName: {targetEntry: '$newName${targetEntry.extension}'}, diff --git a/lib/widgets/viewer/info/info_page.dart b/lib/widgets/viewer/info/info_page.dart index 4cd8781df..e4e94f46d 100644 --- a/lib/widgets/viewer/info/info_page.dart +++ b/lib/widgets/viewer/info/info_page.dart @@ -123,7 +123,7 @@ class _InfoPageState extends State { ShowImageNotification().dispatch(context); _scrollController.animateTo( 0, - duration: ADurations.pageTransitionAnimation, + duration: ADurations.pageTransitionLoose, curve: Curves.easeInOut, ); } @@ -276,7 +276,7 @@ class _InfoPageContentState extends State<_InfoPageContent> { } void _onActionDelegateEvent(ActionEvent event) { - Future.delayed(ADurations.dialogTransitionAnimation).then((_) { + Future.delayed(ADurations.dialogTransitionLoose).then((_) { if (event is ActionStartedEvent) { _isEditingMetadataNotifier.value = event.action; } else if (event is ActionEndedEvent) {