route transition duration renaming

This commit is contained in:
Thibault Deckers 2024-09-15 23:50:55 +02:00
parent 748f8b9270
commit cc3b4f661b
19 changed files with 26 additions and 25 deletions

View file

@ -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);

View file

@ -691,7 +691,7 @@ class _CollectionAppBarState extends State<CollectionAppBar> 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!;

View file

@ -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;
}

View file

@ -81,7 +81,7 @@ mixin FeedbackMixin {
final margin = (marginComputer ?? snackBarMarginDefault).call(context);
return AnimatedPadding(
padding: margin,
duration: ADurations.pageTransitionAnimation,
duration: ADurations.pageTransitionLoose,
child: child,
);
},

View file

@ -76,7 +76,7 @@ class _SearchPageState extends State<SearchPage> {
return;
}
widget.animation.removeStatusListener(_onAnimationStatusChanged);
Future.delayed(ADurations.pageTransitionAnimation * timeDilation).then((_) {
Future.delayed(ADurations.pageTransitionLoose * timeDilation).then((_) {
if (!mounted) return;
_searchFieldFocusNode.requestFocus();
});

View file

@ -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);

View file

@ -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;
});

View file

@ -14,7 +14,7 @@ Future<void> showSelectionDialog<T>({
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);
}

View file

@ -187,7 +187,7 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumFilter> 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!;

View file

@ -250,7 +250,7 @@ abstract class ChipSetActionDelegate<T extends CollectionFilter> 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!;

View file

@ -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<CatalogMetadataChangedEvent>().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) {

View file

@ -115,7 +115,7 @@ class _AppDrawerState extends State<AppDrawer> {
Future<void> 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,

View file

@ -68,7 +68,7 @@ class SettingsSwitchListTile extends StatelessWidget {
Expanded(child: titleWidget),
AnimatedOpacity(
opacity: current ? 1 : disabledOpacity,
duration: ADurations.toggleableTransitionAnimation,
duration: ADurations.toggleableTransitionLoose,
child: trailing,
),
],

View file

@ -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;
}

View file

@ -182,7 +182,7 @@ class _FilePickerPageState extends State<FilePickerPage> {
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(() {});
},

View file

@ -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);
}

View file

@ -68,7 +68,7 @@ class _StatsPageState extends State<StatsPage> 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;
});

View file

@ -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}'},

View file

@ -123,7 +123,7 @@ class _InfoPageState extends State<InfoPage> {
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<EntryAction> event) {
Future.delayed(ADurations.dialogTransitionAnimation).then((_) {
Future.delayed(ADurations.dialogTransitionLoose).then((_) {
if (event is ActionStartedEvent) {
_isEditingMetadataNotifier.value = event.action;
} else if (event is ActionEndedEvent) {