diff --git a/lib/l10n/app_ckb.arb b/lib/l10n/app_ckb.arb index 82c467290..48b0bc2ed 100644 --- a/lib/l10n/app_ckb.arb +++ b/lib/l10n/app_ckb.arb @@ -1,5 +1,5 @@ { - "@@locale" : "ckb", + "@@locale": "ckb", "welcomeOptional": "ئارەزومەندانە", "@welcomeOptional": {}, "welcomeTermsToggle": "ڕازیم بە مەرج و یاساکانی بەکارهێنان", diff --git a/lib/model/entry/extensions/metadata_edition.dart b/lib/model/entry/extensions/metadata_edition.dart index 725505ee8..e0ddc829f 100644 --- a/lib/model/entry/extensions/metadata_edition.dart +++ b/lib/model/entry/extensions/metadata_edition.dart @@ -8,8 +8,8 @@ import 'package:aves/model/entry/extensions/props.dart'; import 'package:aves/model/metadata/date_modifier.dart'; import 'package:aves/ref/metadata/exif.dart'; import 'package:aves/ref/metadata/iptc.dart'; -import 'package:aves/ref/mime_types.dart'; import 'package:aves/ref/metadata/xmp.dart'; +import 'package:aves/ref/mime_types.dart'; import 'package:aves/services/common/services.dart'; import 'package:aves/services/metadata/xmp.dart'; import 'package:aves/utils/time_utils.dart'; diff --git a/lib/model/settings/enums/accessibility_timeout.dart b/lib/model/settings/enums/accessibility_timeout.dart index 6c274a652..dddd22b39 100644 --- a/lib/model/settings/enums/accessibility_timeout.dart +++ b/lib/model/settings/enums/accessibility_timeout.dart @@ -7,9 +7,9 @@ extension ExtraAccessibilityTimeout on AccessibilityTimeout { switch (this) { case AccessibilityTimeout.system: if (hasAction) { - return Duration(milliseconds: await (AccessibilityService.getRecommendedTimeToTakeAction(Durations.opToastActionDisplay))); + return Duration(milliseconds: await (AccessibilityService.getRecommendedTimeToTakeAction(ADurations.opToastActionDisplay))); } else { - return Duration(milliseconds: await (AccessibilityService.getRecommendedTimeToRead(Durations.opToastTextDisplay))); + return Duration(milliseconds: await (AccessibilityService.getRecommendedTimeToRead(ADurations.opToastTextDisplay))); } case AccessibilityTimeout.s1: return const Duration(seconds: 1); diff --git a/lib/services/media/media_session_service.dart b/lib/services/media/media_session_service.dart index 2d287f910..8b970a7a6 100644 --- a/lib/services/media/media_session_service.dart +++ b/lib/services/media/media_session_service.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'package:aves/model/entry/entry.dart'; -import 'package:aves_utils/aves_utils.dart'; import 'package:aves/services/common/services.dart'; +import 'package:aves_utils/aves_utils.dart'; import 'package:aves_video/aves_video.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter/foundation.dart'; diff --git a/lib/theme/durations.dart b/lib/theme/durations.dart index 189766023..486c51874 100644 --- a/lib/theme/durations.dart +++ b/lib/theme/durations.dart @@ -1,6 +1,6 @@ import 'package:flutter/foundation.dart'; -class Durations { +class ADurations { // Flutter animations (with margin) static const popupMenuAnimation = Duration(milliseconds: 300 + 20); // ref `_kMenuDuration` used in `_PopupMenuRoute` // page transition duration also available via `ModalRoute.of(context)!.transitionDuration * timeDilation` diff --git a/lib/widgets/aves_app.dart b/lib/widgets/aves_app.dart index 89b3c5aa6..adba0b911 100644 --- a/lib/widgets/aves_app.dart +++ b/lib/widgets/aves_app.dart @@ -156,7 +156,7 @@ class _AvesAppState extends State with WidgetsBindingObserver { late final Future _dynamicColorPaletteLoader; final TvRailController _tvRailController = TvRailController(); final CollectionSource _mediaStoreSource = MediaStoreSource(); - final Debouncer _mediaStoreChangeDebouncer = Debouncer(delay: Durations.mediaContentChangeDebounceDelay); + final Debouncer _mediaStoreChangeDebouncer = Debouncer(delay: ADurations.mediaContentChangeDebounceDelay); final Set _changedUris = {}; Size? _screenSize; diff --git a/lib/widgets/collection/app_bar.dart b/lib/widgets/collection/app_bar.dart index 95a628d36..6c2c14b75 100644 --- a/lib/widgets/collection/app_bar.dart +++ b/lib/widgets/collection/app_bar.dart @@ -433,7 +433,7 @@ class _CollectionAppBarState extends State with SingleTickerPr }, onSelected: (action) async { // wait for the popup menu to hide before proceeding with the action - await Future.delayed(Durations.popupMenuAnimation * timeDilation); + await Future.delayed(ADurations.popupMenuAnimation * timeDilation); await _onActionSelected(action); }, ), @@ -670,7 +670,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(Durations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); if (value != null && initialValue != value) { settings.collectionSortFactor = value.item1!; settings.collectionSectionFactor = value.item2!; diff --git a/lib/widgets/collection/collection_grid.dart b/lib/widgets/collection/collection_grid.dart index 3719231e4..77f8cbc06 100644 --- a/lib/widgets/collection/collection_grid.dart +++ b/lib/widgets/collection/collection_grid.dart @@ -641,7 +641,7 @@ class _CollectionScrollViewState extends State<_CollectionScrollView> with Widge void _onScrollChanged() { widget.isScrollingNotifier.value = true; _stopScrollMonitoringTimer(); - _scrollMonitoringTimer = Timer(Durations.collectionScrollMonitoringTimerDelay, () { + _scrollMonitoringTimer = Timer(ADurations.collectionScrollMonitoringTimerDelay, () { widget.isScrollingNotifier.value = false; }); } diff --git a/lib/widgets/collection/collection_page.dart b/lib/widgets/collection/collection_page.dart index 844bc757f..867d73e73 100644 --- a/lib/widgets/collection/collection_page.dart +++ b/lib/widgets/collection/collection_page.dart @@ -222,7 +222,7 @@ class _CollectionPageState extends State { if (item == null) return; final delayDuration = context.read().staggeredAnimationPageTarget; - await Future.delayed(delayDuration + Durations.highlightScrollInitDelay); + await Future.delayed(delayDuration + ADurations.highlightScrollInitDelay); if (!mounted) return; final animate = context.read().accessibilityAnimations.animate; diff --git a/lib/widgets/collection/entry_set_action_delegate.dart b/lib/widgets/collection/entry_set_action_delegate.dart index 2eb7a9bdc..ace60d48d 100644 --- a/lib/widgets/collection/entry_set_action_delegate.dart +++ b/lib/widgets/collection/entry_set_action_delegate.dart @@ -487,7 +487,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(Durations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); return supported; } diff --git a/lib/widgets/collection/filter_bar.dart b/lib/widgets/collection/filter_bar.dart index 20f1a47ed..848c8b37a 100644 --- a/lib/widgets/collection/filter_bar.dart +++ b/lib/widgets/collection/filter_bar.dart @@ -62,7 +62,7 @@ class _FilterBarState extends State { ); } : (context, animation) => const SizedBox(), - duration: animate ? Durations.filterBarRemovalAnimation : Duration.zero, + duration: animate ? ADurations.filterBarRemovalAnimation : Duration.zero, ); }); added.forEach((filter) { diff --git a/lib/widgets/common/action_mixins/entry_storage.dart b/lib/widgets/common/action_mixins/entry_storage.dart index c41508ae1..4129459fd 100644 --- a/lib/widgets/common/action_mixins/entry_storage.dart +++ b/lib/widgets/common/action_mixins/entry_storage.dart @@ -437,7 +437,7 @@ mixin EntryStorageMixin on FeedbackMixin, PermissionAwareMixin, SizeAwareMixin { )); } else { // track in current page, without navigation - await Future.delayed(Durations.highlightScrollInitDelay); + await Future.delayed(ADurations.highlightScrollInitDelay); final targetEntry = collection.sortedEntries.firstWhereOrNull(highlightTest); if (targetEntry != null) { context.read().trackItem(targetEntry, highlightItem: targetEntry); diff --git a/lib/widgets/common/action_mixins/feedback.dart b/lib/widgets/common/action_mixins/feedback.dart index ec3ae653d..e56d555a0 100644 --- a/lib/widgets/common/action_mixins/feedback.dart +++ b/lib/widgets/common/action_mixins/feedback.dart @@ -171,7 +171,7 @@ class _ReportOverlayState extends State> with SingleTickerPr super.initState(); _animationController = AnimationController( - duration: Durations.collectionOpOverlayAnimation, + duration: ADurations.collectionOpOverlayAnimation, vsync: this, ); _animation = CurvedAnimation( @@ -395,7 +395,7 @@ class _ActionFeedbackState extends State with SingleTickerProvid void initState() { super.initState(); _animationController = AnimationController( - duration: Durations.viewerActionFeedbackAnimation, + duration: ADurations.viewerActionFeedbackAnimation, vsync: this, ); } diff --git a/lib/widgets/common/app_bar/app_bar_subtitle.dart b/lib/widgets/common/app_bar/app_bar_subtitle.dart index b0a5c751a..87fc75855 100644 --- a/lib/widgets/common/app_bar/app_bar_subtitle.dart +++ b/lib/widgets/common/app_bar/app_bar_subtitle.dart @@ -29,7 +29,7 @@ class SourceStateAwareAppBarTitle extends StatelessWidget { valueListenable: source.stateNotifier, builder: (context, sourceState, child) { return AnimatedSwitcher( - duration: Durations.appBarTitleAnimation, + duration: ADurations.appBarTitleAnimation, transitionBuilder: (child, animation) => FadeTransition( opacity: animation, child: SizeTransition( diff --git a/lib/widgets/common/basic/query_bar.dart b/lib/widgets/common/basic/query_bar.dart index 2c75c93aa..24dd2637b 100644 --- a/lib/widgets/common/basic/query_bar.dart +++ b/lib/widgets/common/basic/query_bar.dart @@ -30,7 +30,7 @@ class QueryBar extends StatefulWidget { } class _QueryBarState extends State { - final Debouncer _debouncer = Debouncer(delay: Durations.searchDebounceDelay); + final Debouncer _debouncer = Debouncer(delay: ADurations.searchDebounceDelay); late TextEditingController _controller; ValueNotifier get queryNotifier => widget.queryNotifier; @@ -85,7 +85,7 @@ class _QueryBarState extends State { child: ValueListenableBuilder( valueListenable: _controller, builder: (context, value, child) => AnimatedSwitcher( - duration: Durations.appBarActionChangeAnimation, + duration: ADurations.appBarActionChangeAnimation, transitionBuilder: (child, animation) => FadeTransition( opacity: animation, child: SizeTransition( diff --git a/lib/widgets/common/behaviour/pop/double_back.dart b/lib/widgets/common/behaviour/pop/double_back.dart index 2956eefb0..e2dd820e9 100644 --- a/lib/widgets/common/behaviour/pop/double_back.dart +++ b/lib/widgets/common/behaviour/pop/double_back.dart @@ -18,10 +18,10 @@ class DoubleBackPopHandler { if (!Navigator.canPop(context) && settings.mustBackTwiceToExit && !_backOnce) { _backOnce = true; _stopBackTimer(); - _backTimer = Timer(Durations.doubleBackTimerDelay, () => _backOnce = false); + _backTimer = Timer(ADurations.doubleBackTimerDelay, () => _backOnce = false); toast( context.l10n.doubleBackExitMessage, - duration: Durations.doubleBackTimerDelay, + duration: ADurations.doubleBackTimerDelay, ); return false; } diff --git a/lib/widgets/common/expandable_filter_row.dart b/lib/widgets/common/expandable_filter_row.dart index a3dccd4ce..f7e3e8e0c 100644 --- a/lib/widgets/common/expandable_filter_row.dart +++ b/lib/widgets/common/expandable_filter_row.dart @@ -119,7 +119,7 @@ class ExpandableFilterRow extends StatelessWidget { Widget build(BuildContext context) { if (filters.isEmpty) return const SizedBox(); return AnimatedSwitcher( - duration: Durations.filterRowExpandAnimation, + duration: ADurations.filterRowExpandAnimation, layoutBuilder: (currentChild, previousChildren) => Stack( children: [ ...previousChildren, diff --git a/lib/widgets/common/fx/dashed_path_painter.dart b/lib/widgets/common/fx/dashed_path_painter.dart index 5d0c36d56..847ca422f 100644 --- a/lib/widgets/common/fx/dashed_path_painter.dart +++ b/lib/widgets/common/fx/dashed_path_painter.dart @@ -1,5 +1,5 @@ -import 'dart:ui' as ui; import 'dart:math' as math; +import 'dart:ui' as ui; import 'package:flutter/material.dart'; diff --git a/lib/widgets/common/fx/sweeper.dart b/lib/widgets/common/fx/sweeper.dart index 3b387834f..bb01c693b 100644 --- a/lib/widgets/common/fx/sweeper.dart +++ b/lib/widgets/common/fx/sweeper.dart @@ -40,7 +40,7 @@ class _SweeperState extends State with SingleTickerProviderStateMixin { void initState() { super.initState(); _angleAnimationController = AnimationController( - duration: Durations.sweepingAnimation, + duration: ADurations.sweepingAnimation, vsync: this, ); final startAngle = widget.startAngle; @@ -85,7 +85,7 @@ class _SweeperState extends State with SingleTickerProviderStateMixin { return IgnorePointer( child: AnimatedOpacity( opacity: isToggled && (_isAppearing || _angleAnimationController.status == AnimationStatus.forward) ? 1 : 0, - duration: Durations.sweeperOpacityAnimation, + duration: ADurations.sweeperOpacityAnimation, child: ValueListenableBuilder( valueListenable: _angleAnimationController, builder: (context, value, child) { @@ -112,7 +112,7 @@ class _SweeperState extends State with SingleTickerProviderStateMixin { if (isToggled) { _isAppearing = true; setState(() {}); - await Future.delayed(Durations.sweeperOpacityAnimation * timeDilation); + await Future.delayed(ADurations.sweeperOpacityAnimation * timeDilation); _isAppearing = false; if (mounted) { _angleAnimationController.reset(); diff --git a/lib/widgets/common/grid/header.dart b/lib/widgets/common/grid/header.dart index 16be78103..ce4213cc2 100644 --- a/lib/widgets/common/grid/header.dart +++ b/lib/widgets/common/grid/header.dart @@ -182,7 +182,7 @@ class _SectionSelectableLeading extends StatelessWidget { descendantsAreFocusable: false, descendantsAreTraversable: false, child: AnimatedSwitcher( - duration: Durations.sectionHeaderAnimation, + duration: ADurations.sectionHeaderAnimation, switchInCurve: Curves.easeInOut, switchOutCurve: Curves.easeInOut, transitionBuilder: (child, animation) { @@ -225,7 +225,7 @@ class _SectionSelectingLeading extends StatelessWidget { final selection = context.watch>(); final isSelected = selection.isSelected(sectionEntries); return AnimatedSwitcher( - duration: Durations.sectionHeaderAnimation, + duration: ADurations.sectionHeaderAnimation, switchInCurve: Curves.easeOutBack, switchOutCurve: Curves.easeOutBack, transitionBuilder: (child, animation) => ScaleTransition( diff --git a/lib/widgets/common/grid/item_tracker.dart b/lib/widgets/common/grid/item_tracker.dart index 4cd88a32f..8ef7203fa 100644 --- a/lib/widgets/common/grid/item_tracker.dart +++ b/lib/widgets/common/grid/item_tracker.dart @@ -115,12 +115,12 @@ class _GridItemTrackerState extends State> with WidgetsBin if (event.animate) { await scrollController.animateTo( scrollOffset, - duration: Duration(milliseconds: (scrollOffset / 2).round().clamp(Durations.highlightScrollAnimationMinMillis, Durations.highlightScrollAnimationMaxMillis)), + duration: Duration(milliseconds: (scrollOffset / 2).round().clamp(ADurations.highlightScrollAnimationMinMillis, ADurations.highlightScrollAnimationMaxMillis)), curve: Curves.easeInOutCubic, ); } else { scrollController.jumpTo(scrollOffset); - await Future.delayed(Durations.highlightJumpDelay); + await Future.delayed(ADurations.highlightJumpDelay); } } diff --git a/lib/widgets/common/grid/overlay.dart b/lib/widgets/common/grid/overlay.dart index 2961dff2b..fe7515494 100644 --- a/lib/widgets/common/grid/overlay.dart +++ b/lib/widgets/common/grid/overlay.dart @@ -10,7 +10,7 @@ class GridItemSelectionOverlay extends StatelessWidget { final BorderRadius? borderRadius; final EdgeInsets? padding; - static const duration = Durations.thumbnailOverlayAnimation; + static const duration = ADurations.thumbnailOverlayAnimation; const GridItemSelectionOverlay({ super.key, diff --git a/lib/widgets/common/grid/sections/fixed/scale_overlay.dart b/lib/widgets/common/grid/sections/fixed/scale_overlay.dart index 2c60d998d..05b3b8c7f 100644 --- a/lib/widgets/common/grid/sections/fixed/scale_overlay.dart +++ b/lib/widgets/common/grid/sections/fixed/scale_overlay.dart @@ -93,7 +93,7 @@ class _OverlayBackgroundState extends State<_OverlayBackground> { Widget build(BuildContext context) { return AnimatedContainer( decoration: _buildBackgroundDecoration(context), - duration: Durations.scalingGridBackgroundAnimation, + duration: ADurations.scalingGridBackgroundAnimation, child: widget.child, ); } diff --git a/lib/widgets/common/grid/sections/mosaic/scale_grid.dart b/lib/widgets/common/grid/sections/mosaic/scale_grid.dart index f199d80ab..820d5c75b 100644 --- a/lib/widgets/common/grid/sections/mosaic/scale_grid.dart +++ b/lib/widgets/common/grid/sections/mosaic/scale_grid.dart @@ -57,7 +57,7 @@ class MosaicGrid extends StatelessWidget { top: dy, width: itemWidth, height: itemHeight, - duration: Durations.scalingGridPositionAnimation, + duration: ADurations.scalingGridPositionAnimation, child: builder(i, targetExtent), ), ); diff --git a/lib/widgets/common/grid/sections/mosaic/scale_overlay.dart b/lib/widgets/common/grid/sections/mosaic/scale_overlay.dart index dac60fbac..c5df7da96 100644 --- a/lib/widgets/common/grid/sections/mosaic/scale_overlay.dart +++ b/lib/widgets/common/grid/sections/mosaic/scale_overlay.dart @@ -98,7 +98,7 @@ class _OverlayBackgroundState extends State<_OverlayBackground> { Widget build(BuildContext context) { return AnimatedContainer( decoration: _buildBackgroundDecoration(context), - duration: Durations.scalingGridBackgroundAnimation, + duration: ADurations.scalingGridBackgroundAnimation, child: widget.child, ); } diff --git a/lib/widgets/common/identity/aves_filter_chip.dart b/lib/widgets/common/identity/aves_filter_chip.dart index 4d90fcd55..4022b6553 100644 --- a/lib/widgets/common/identity/aves_filter_chip.dart +++ b/lib/widgets/common/identity/aves_filter_chip.dart @@ -152,7 +152,7 @@ class AvesFilterChip extends StatefulWidget { ); if (selectedAction != null) { // wait for the popup menu to hide before proceeding with the action - await Future.delayed(Durations.popupMenuAnimation * timeDilation); + await Future.delayed(ADurations.popupMenuAnimation * timeDilation); actionDelegate.onActionSelected(context, filter, selectedAction); } } diff --git a/lib/widgets/common/map/buttons/coordinate_filter.dart b/lib/widgets/common/map/buttons/coordinate_filter.dart index 4146ae893..87c22e446 100644 --- a/lib/widgets/common/map/buttons/coordinate_filter.dart +++ b/lib/widgets/common/map/buttons/coordinate_filter.dart @@ -25,7 +25,7 @@ class OverlayCoordinateFilterChip extends StatefulWidget { } class _OverlayCoordinateFilterChipState extends State { - final Debouncer _debouncer = Debouncer(delay: Durations.mapInfoDebounceDelay); + final Debouncer _debouncer = Debouncer(delay: ADurations.mapInfoDebounceDelay); final ValueNotifier _idleBoundsNotifier = ValueNotifier(null); @override diff --git a/lib/widgets/common/map/geo_map.dart b/lib/widgets/common/map/geo_map.dart index ef12052ea..a69e189ff 100644 --- a/lib/widgets/common/map/geo_map.dart +++ b/lib/widgets/common/map/geo_map.dart @@ -261,7 +261,7 @@ class _GeoMapState extends State { return AnimatedSize( alignment: Alignment.topCenter, curve: Curves.easeInOutCubic, - duration: Durations.mapStyleSwitchAnimation, + duration: ADurations.mapStyleSwitchAnimation, child: ValueListenableBuilder( valueListenable: widget.isAnimatingNotifier, builder: (context, animating, child) { diff --git a/lib/widgets/common/map/leaflet/map.dart b/lib/widgets/common/map/leaflet/map.dart index a48ff84e6..0c3fe7d5d 100644 --- a/lib/widgets/common/map/leaflet/map.dart +++ b/lib/widgets/common/map/leaflet/map.dart @@ -62,7 +62,7 @@ class _EntryLeafletMapState extends State> with TickerProv final MapController _leafletMapController = MapController(); final List _subscriptions = []; Map, GeoEntry> _geoEntryByMarkerKey = {}; - final Debouncer _debouncer = Debouncer(delay: Durations.mapIdleDebounceDelay); + final Debouncer _debouncer = Debouncer(delay: ADurations.mapIdleDebounceDelay); ValueNotifier get boundsNotifier => widget.boundsNotifier; diff --git a/lib/widgets/common/search/page.dart b/lib/widgets/common/search/page.dart index 8aee4f8d9..fe1f32f61 100644 --- a/lib/widgets/common/search/page.dart +++ b/lib/widgets/common/search/page.dart @@ -29,7 +29,7 @@ class SearchPage extends StatefulWidget { } class _SearchPageState extends State { - final Debouncer _debouncer = Debouncer(delay: Durations.searchDebounceDelay); + final Debouncer _debouncer = Debouncer(delay: ADurations.searchDebounceDelay); final FocusNode _searchFieldFocusNode = FocusNode(); final DoubleBackPopHandler _doubleBackPopHandler = DoubleBackPopHandler(); @@ -77,7 +77,7 @@ class _SearchPageState extends State { return; } widget.animation.removeStatusListener(_onAnimationStatusChanged); - Future.delayed(Durations.pageTransitionAnimation * timeDilation).then((_) { + Future.delayed(ADurations.pageTransitionAnimation * timeDilation).then((_) { if (!mounted) return; _searchFieldFocusNode.requestFocus(); }); diff --git a/lib/widgets/common/thumbnail/overlay.dart b/lib/widgets/common/thumbnail/overlay.dart index 6326be3d4..e1e2dd518 100644 --- a/lib/widgets/common/thumbnail/overlay.dart +++ b/lib/widgets/common/thumbnail/overlay.dart @@ -83,7 +83,7 @@ class ThumbnailZoomOverlay extends StatelessWidget { }); static const alignment = AlignmentDirectional.bottomEnd; - static const duration = Durations.thumbnailOverlayAnimation; + static const duration = ADurations.thumbnailOverlayAnimation; @override Widget build(BuildContext context) { diff --git a/lib/widgets/common/thumbnail/scroller.dart b/lib/widgets/common/thumbnail/scroller.dart index ab5680dd6..40dd73e6a 100644 --- a/lib/widgets/common/thumbnail/scroller.dart +++ b/lib/widgets/common/thumbnail/scroller.dart @@ -151,7 +151,7 @@ class _ThumbnailScrollerState extends State { color: currentIndex == index ? Colors.transparent : Colors.black45, width: thumbnailExtent, height: thumbnailExtent, - duration: Durations.thumbnailScrollerShadeAnimation, + duration: ADurations.thumbnailScrollerShadeAnimation, ); }, ), @@ -172,7 +172,7 @@ class _ThumbnailScrollerState extends State { _isAnimating = true; await _scrollController.animateTo( targetOffset, - duration: Durations.thumbnailScrollerScrollAnimation, + duration: ADurations.thumbnailScrollerScrollAnimation, curve: Curves.easeOutCubic, ); _isAnimating = false; diff --git a/lib/widgets/debug/app_debug_page.dart b/lib/widgets/debug/app_debug_page.dart index 9c5506efb..ffc38373d 100644 --- a/lib/widgets/debug/app_debug_page.dart +++ b/lib/widgets/debug/app_debug_page.dart @@ -65,7 +65,7 @@ class _AppDebugPageState extends State { .toList(), onSelected: (action) async { // wait for the popup menu to hide before proceeding with the action - await Future.delayed(Durations.popupMenuAnimation * timeDilation); + await Future.delayed(ADurations.popupMenuAnimation * timeDilation); unawaited(_onActionSelected(action)); }, ), diff --git a/lib/widgets/dialogs/entry_editors/rename_entry_set_page.dart b/lib/widgets/dialogs/entry_editors/rename_entry_set_page.dart index a9bb11799..20be3112c 100644 --- a/lib/widgets/dialogs/entry_editors/rename_entry_set_page.dart +++ b/lib/widgets/dialogs/entry_editors/rename_entry_set_page.dart @@ -103,7 +103,7 @@ class _RenameEntrySetPageState extends State { }, onSelected: (key) async { // wait for the popup menu to hide before proceeding with the action - await Future.delayed(Durations.popupMenuAnimation * timeDilation); + await Future.delayed(ADurations.popupMenuAnimation * timeDilation); _insertProcessor(key); }, tooltip: l10n.renameEntrySetPageInsertTooltip, diff --git a/lib/widgets/dialogs/entry_editors/tag_editor_page.dart b/lib/widgets/dialogs/entry_editors/tag_editor_page.dart index 246fd4d7b..885bf0fba 100644 --- a/lib/widgets/dialogs/entry_editors/tag_editor_page.dart +++ b/lib/widgets/dialogs/entry_editors/tag_editor_page.dart @@ -204,7 +204,7 @@ class _TagEditorPageState extends State { onLongPress: null, ), crossFadeState: sortedTags.isEmpty ? CrossFadeState.showFirst : CrossFadeState.showSecond, - duration: Durations.tagEditorTransition, + duration: ADurations.tagEditorTransition, ), ), const Divider(height: 0), diff --git a/lib/widgets/dialogs/filter_editors/create_album_dialog.dart b/lib/widgets/dialogs/filter_editors/create_album_dialog.dart index c31895d9a..20bb2a2ea 100644 --- a/lib/widgets/dialogs/filter_editors/create_album_dialog.dart +++ b/lib/widgets/dialogs/filter_editors/create_album_dialog.dart @@ -133,7 +133,7 @@ class _CreateAlbumDialogState extends State { // when the field gets focus, we wait for the soft keyboard to appear // then scroll to the bottom to make sure the field is in view if (_nameFieldFocusNode.hasFocus) { - await Future.delayed(Durations.softKeyboardDisplayDelay + const Duration(milliseconds: 500)); + await Future.delayed(ADurations.softKeyboardDisplayDelay + const Duration(milliseconds: 500)); _scrollToBottom(); } } @@ -141,7 +141,7 @@ class _CreateAlbumDialogState extends State { void _scrollToBottom() { _scrollController.animateTo( _scrollController.position.maxScrollExtent, - duration: Durations.dialogFieldReachAnimation, + duration: ADurations.dialogFieldReachAnimation, curve: Curves.easeInOut, ); } diff --git a/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart b/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart index 13f446aef..56082c3e8 100644 --- a/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart +++ b/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart @@ -227,7 +227,7 @@ class _AlbumPickPageState extends State<_AlbumPickPage> { FocusManager.instance.primaryFocus?.unfocus(); // wait for the popup menu to hide before proceeding with the action - await Future.delayed(Durations.popupMenuAnimation * timeDilation); + await Future.delayed(ADurations.popupMenuAnimation * timeDilation); onActionSelected(action); }, ), @@ -243,7 +243,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(Durations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); _pickAlbum(directory); } @@ -265,7 +265,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(Durations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionAnimation * 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 5c79bc06a..452f3e9d2 100644 --- a/lib/widgets/dialogs/pick_dialogs/location_pick_page.dart +++ b/lib/widgets/dialogs/pick_dialogs/location_pick_page.dart @@ -68,7 +68,7 @@ class _ContentState extends State<_Content> with SingleTickerProviderStateMixin final AvesMapController _mapController = AvesMapController(); late final ValueNotifier _isPageAnimatingNotifier; final ValueNotifier _dotLocationNotifier = ValueNotifier(null), _infoLocationNotifier = ValueNotifier(null); - final Debouncer _infoDebouncer = Debouncer(delay: Durations.mapInfoDebounceDelay); + final Debouncer _infoDebouncer = Debouncer(delay: ADurations.mapInfoDebounceDelay); CollectionLens? get openingCollection => widget.collection; @@ -78,7 +78,7 @@ class _ContentState extends State<_Content> with SingleTickerProviderStateMixin if (ExtraEntryMapStyle.isHeavy(settings.mapStyle)) { _isPageAnimatingNotifier = ValueNotifier(true); - Future.delayed(Durations.pageTransitionAnimation * timeDilation).then((_) { + Future.delayed(ADurations.pageTransitionAnimation * 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 4a827e56f..3c80ec6a9 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(Durations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionAnimation * 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 9a46e474d..45497f459 100644 --- a/lib/widgets/filter_grids/common/action_delegates/album_set.dart +++ b/lib/widgets/filter_grids/common/action_delegates/album_set.dart @@ -190,7 +190,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(Durations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); if (value != null && initialValue != value) { sortFactor = value.item1!; settings.albumGroupFactor = value.item2!; 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 4f4a8b92d..16243ebc7 100644 --- a/lib/widgets/filter_grids/common/action_delegates/chip_set.dart +++ b/lib/widgets/filter_grids/common/action_delegates/chip_set.dart @@ -237,7 +237,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(Durations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); if (value != null && initialValue != value) { sortFactor = value.item1!; tileLayout = value.item3!; diff --git a/lib/widgets/filter_grids/common/app_bar.dart b/lib/widgets/filter_grids/common/app_bar.dart index 435576e71..d68cc0878 100644 --- a/lib/widgets/filter_grids/common/app_bar.dart +++ b/lib/widgets/filter_grids/common/app_bar.dart @@ -366,7 +366,7 @@ class _FilterGridAppBarState extends StatelessWidget { if (pinned) AnimatedPadding( padding: EdgeInsetsDirectional.only(end: padding), - duration: Durations.chipDecorationAnimation, + duration: ADurations.chipDecorationAnimation, child: Icon( AIcons.pin, color: _detailColor(context), @@ -193,7 +193,7 @@ class CoveredFilterChip extends StatelessWidget { if (filter is AlbumFilter && androidFileUtils.isOnRemovableStorage(filter.album)) AnimatedPadding( padding: EdgeInsetsDirectional.only(end: padding), - duration: Durations.chipDecorationAnimation, + duration: ADurations.chipDecorationAnimation, child: Icon( AIcons.removableStorage, color: _detailColor(context), @@ -203,7 +203,7 @@ class CoveredFilterChip extends StatelessWidget { if (filter is AlbumFilter && vaults.isVault(filter.album)) AnimatedPadding( padding: EdgeInsetsDirectional.only(end: padding), - duration: Durations.chipDecorationAnimation, + duration: ADurations.chipDecorationAnimation, child: Icon( AIcons.locked, color: _detailColor(context), diff --git a/lib/widgets/filter_grids/common/filter_grid_page.dart b/lib/widgets/filter_grids/common/filter_grid_page.dart index 7daaca92a..08e77f989 100644 --- a/lib/widgets/filter_grids/common/filter_grid_page.dart +++ b/lib/widgets/filter_grids/common/filter_grid_page.dart @@ -546,7 +546,7 @@ class _FilterSectionedContentState extends State<_Fi final item = visibleSections.values.expand((list) => list).firstWhereOrNull((gridItem) => gridItem.filter == filter); if (item == null) return; - await Future.delayed(Durations.highlightScrollInitDelay); + await Future.delayed(ADurations.highlightScrollInitDelay); final animate = context.read().accessibilityAnimations.animate; highlightInfo.trackItem(item, animate: animate, highlightItem: filter); diff --git a/lib/widgets/map/map_page.dart b/lib/widgets/map/map_page.dart index 75a01c57c..59bf3b2f2 100644 --- a/lib/widgets/map/map_page.dart +++ b/lib/widgets/map/map_page.dart @@ -115,7 +115,7 @@ class _ContentState extends State<_Content> with SingleTickerProviderStateMixin if (ExtraEntryMapStyle.isHeavy(settings.mapStyle)) { _isPageAnimatingNotifier.value = true; - Future.delayed(Durations.pageTransitionAnimation * timeDilation).then((_) { + Future.delayed(ADurations.pageTransitionAnimation * timeDilation).then((_) { if (!mounted) return; _isPageAnimatingNotifier.value = false; }); @@ -139,7 +139,7 @@ class _ContentState extends State<_Content> with SingleTickerProviderStateMixin _subscriptions.add(openingCollection.source.eventBus.on().listen((e) => _updateRegionCollection())); _selectedIndexNotifier.addListener(_onThumbnailIndexChanged); - Future.delayed(Durations.pageTransitionAnimation * timeDilation + const Duration(seconds: 1), () { + Future.delayed(ADurations.pageTransitionAnimation * timeDilation + const Duration(seconds: 1), () { final regionEntries = regionCollection?.sortedEntries ?? []; final initialEntry = widget.initialEntry ?? regionEntries.firstOrNull; if (initialEntry != null) { @@ -475,7 +475,7 @@ class _ContentState extends State<_Content> with SingleTickerProviderStateMixin ); if (selectedAction != null) { // wait for the popup menu to hide before proceeding with the action - await Future.delayed(Durations.popupMenuAnimation * timeDilation); + await Future.delayed(ADurations.popupMenuAnimation * timeDilation); final delegate = EntrySetActionDelegate(); switch (selectedAction) { case MapClusterAction.editLocation: diff --git a/lib/widgets/map/scroller.dart b/lib/widgets/map/scroller.dart index 0d013ae12..5bb89661f 100644 --- a/lib/widgets/map/scroller.dart +++ b/lib/widgets/map/scroller.dart @@ -28,7 +28,7 @@ class MapEntryScroller extends StatefulWidget { class _MapEntryScrollerState extends State { final ValueNotifier _infoEntryNotifier = ValueNotifier(null); - final Debouncer _infoDebouncer = Debouncer(delay: Durations.mapInfoDebounceDelay); + final Debouncer _infoDebouncer = Debouncer(delay: ADurations.mapInfoDebounceDelay); @override void initState() { diff --git a/lib/widgets/navigation/drawer/app_drawer.dart b/lib/widgets/navigation/drawer/app_drawer.dart index 30cd59f36..b499a33fb 100644 --- a/lib/widgets/navigation/drawer/app_drawer.dart +++ b/lib/widgets/navigation/drawer/app_drawer.dart @@ -111,7 +111,7 @@ class _AppDrawerState extends State { Widget _buildHeader(BuildContext context) { Future goTo(String routeName, WidgetBuilder pageBuilder) async { Navigator.maybeOf(context)?.pop(); - await Future.delayed(Durations.drawerTransitionAnimation); + await Future.delayed(ADurations.drawerTransitionAnimation); await Navigator.maybeOf(context)?.push(MaterialPageRoute( settings: RouteSettings(name: routeName), builder: pageBuilder, diff --git a/lib/widgets/settings/common/quick_actions/action_panel.dart b/lib/widgets/settings/common/quick_actions/action_panel.dart index 2b099bbbd..636b5923d 100644 --- a/lib/widgets/settings/common/quick_actions/action_panel.dart +++ b/lib/widgets/settings/common/quick_actions/action_panel.dart @@ -29,7 +29,7 @@ class ActionPanel extends StatelessWidget { borderRadius: const BorderRadius.all(Radius.circular(8)), ), margin: const EdgeInsets.all(16), - duration: Durations.quickActionHighlightAnimation, + duration: ADurations.quickActionHighlightAnimation, child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(8)), child: child, diff --git a/lib/widgets/settings/common/quick_actions/editor_page.dart b/lib/widgets/settings/common/quick_actions/editor_page.dart index 4ba51136c..331dcd49d 100644 --- a/lib/widgets/settings/common/quick_actions/editor_page.dart +++ b/lib/widgets/settings/common/quick_actions/editor_page.dart @@ -111,7 +111,7 @@ class _QuickActionEditorBodyState extends State extends State _reordering = false); + Future.delayed(ADurations.quickActionListAnimation).then((value) => _reordering = false); return true; } @@ -344,7 +344,7 @@ class _QuickActionEditorBodyState extends State DraggedPlaceholder(child: _buildQuickActionButton(action, animation)), - duration: Durations.quickActionListAnimation, + duration: ADurations.quickActionListAnimation, ); _quickActionsChangeNotifier.notify(); return true; diff --git a/lib/widgets/settings/common/tile_leading.dart b/lib/widgets/settings/common/tile_leading.dart index 1fe84bac9..fb96a5063 100644 --- a/lib/widgets/settings/common/tile_leading.dart +++ b/lib/widgets/settings/common/tile_leading.dart @@ -25,7 +25,7 @@ class SettingsTileLeading extends StatelessWidget { )), shape: BoxShape.circle, ), - duration: Durations.themeColorModeAnimation, + duration: ADurations.themeColorModeAnimation, child: DecoratedIcon( icon, size: 18, diff --git a/lib/widgets/settings/common/tiles.dart b/lib/widgets/settings/common/tiles.dart index c9fabc4c7..0422ce3d4 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: Durations.toggleableTransitionAnimation, + duration: ADurations.toggleableTransitionAnimation, child: trailing, ), ], diff --git a/lib/widgets/settings/language/locale_tile.dart b/lib/widgets/settings/language/locale_tile.dart index e56081eb6..fa0b2fa49 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(Durations.pageTransitionAnimation * timeDilation); + await Future.delayed(ADurations.pageTransitionAnimation * 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 a62d27bed..592411125 100644 --- a/lib/widgets/settings/privacy/file_picker/file_picker_page.dart +++ b/lib/widgets/settings/privacy/file_picker/file_picker_page.dart @@ -83,7 +83,7 @@ class _FilePickerPageState extends State { }, onSelected: (action) async { // wait for the popup menu to hide before proceeding with the action - await Future.delayed(Durations.popupMenuAnimation * timeDilation); + await Future.delayed(ADurations.popupMenuAnimation * timeDilation); switch (action) { case _PickerAction.toggleHiddenView: settings.filePickerShowHiddenFiles = !showHidden; @@ -168,7 +168,7 @@ class _FilePickerPageState extends State { title: Text(v.getDescription(context)), onTap: () async { Navigator.maybeOf(context)?.pop(); - await Future.delayed(Durations.drawerTransitionAnimation); + await Future.delayed(ADurations.drawerTransitionAnimation); _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 0e94d6372..98286221f 100644 --- a/lib/widgets/settings/privacy/hidden_items_page.dart +++ b/lib/widgets/settings/privacy/hidden_items_page.dart @@ -155,7 +155,7 @@ class _HiddenPaths extends StatelessWidget { ), ); // wait for the dialog to hide as applying the change may block the UI - await Future.delayed(Durations.pageTransitionAnimation * timeDilation); + await Future.delayed(ADurations.pageTransitionAnimation * timeDilation); if (path != null && path.isNotEmpty) { settings.changeFilterVisibility({PathFilter(path)}, false); } diff --git a/lib/widgets/settings/settings_mobile_page.dart b/lib/widgets/settings/settings_mobile_page.dart index 1ae0c5f9a..567ec4da4 100644 --- a/lib/widgets/settings/settings_mobile_page.dart +++ b/lib/widgets/settings/settings_mobile_page.dart @@ -71,7 +71,7 @@ class _SettingsMobilePageState extends State with FeedbackMi }, onSelected: (action) async { // wait for the popup menu to hide before proceeding with the action - await Future.delayed(Durations.popupMenuAnimation * timeDilation); + await Future.delayed(ADurations.popupMenuAnimation * timeDilation); _onActionSelected(action); }, ), diff --git a/lib/widgets/stats/stats_page.dart b/lib/widgets/stats/stats_page.dart index 6df276911..a0a146bf6 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(Durations.pageTransitionAnimation * timeDilation).then((_) { + Future.delayed(ADurations.pageTransitionAnimation * 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 e4c8f36db..32bdc7f7e 100644 --- a/lib/widgets/viewer/action/entry_action_delegate.dart +++ b/lib/widgets/viewer/action/entry_action_delegate.dart @@ -401,7 +401,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(Durations.dialogTransitionAnimation * timeDilation); + await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation); await rename( context, entriesToNewName: {targetEntry: '$newName${targetEntry.extension}'}, diff --git a/lib/widgets/viewer/action/video_action_delegate.dart b/lib/widgets/viewer/action/video_action_delegate.dart index d01536db1..710c71416 100644 --- a/lib/widgets/viewer/action/video_action_delegate.dart +++ b/lib/widgets/viewer/action/video_action_delegate.dart @@ -205,7 +205,7 @@ class VideoActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAwareMix await controller.play(); } // hide overlay - _overlayHidingTimer = Timer(context.read().iconAnimation + Durations.videoOverlayHideDelay, () { + _overlayHidingTimer = Timer(context.read().iconAnimation + ADurations.videoOverlayHideDelay, () { const ToggleOverlayNotification(visible: false).dispatch(context); }); } diff --git a/lib/widgets/viewer/controls/controller.dart b/lib/widgets/viewer/controls/controller.dart index 7c087f615..9e5a87f4b 100644 --- a/lib/widgets/viewer/controls/controller.dart +++ b/lib/widgets/viewer/controls/controller.dart @@ -100,7 +100,7 @@ class ViewerController { ), )); _autopilotAnimationControllers[vsync] = animationController; - Future.delayed(Durations.viewerHorizontalPageAnimation).then((_) => _autopilotAnimationControllers[vsync]?.forward()); + Future.delayed(ADurations.viewerHorizontalPageAnimation).then((_) => _autopilotAnimationControllers[vsync]?.forward()); } } diff --git a/lib/widgets/viewer/entry_vertical_pager.dart b/lib/widgets/viewer/entry_vertical_pager.dart index 7e6cd8129..b81cb75fa 100644 --- a/lib/widgets/viewer/entry_vertical_pager.dart +++ b/lib/widgets/viewer/entry_vertical_pager.dart @@ -309,7 +309,7 @@ class _ViewerVerticalPageViewState extends State { if (animate) { pageController.animateToPage( target, - duration: Durations.viewerHorizontalPageAnimation, + duration: ADurations.viewerHorizontalPageAnimation, curve: Curves.easeInOutCubic, ); } else { @@ -333,7 +333,7 @@ class _ViewerVerticalPageViewState extends State { _isVerticallyScrollingNotifier.value = true; _stopScrollMonitoringTimer(); - _verticalScrollMonitoringTimer = Timer(Durations.infoScrollMonitoringTimerDelay, () { + _verticalScrollMonitoringTimer = Timer(ADurations.infoScrollMonitoringTimerDelay, () { _isVerticallyScrollingNotifier.value = false; }); } diff --git a/lib/widgets/viewer/info/info_app_bar.dart b/lib/widgets/viewer/info/info_app_bar.dart index 69f2b910e..767a4b1d6 100644 --- a/lib/widgets/viewer/info/info_app_bar.dart +++ b/lib/widgets/viewer/info/info_app_bar.dart @@ -90,7 +90,7 @@ class InfoAppBar extends StatelessWidget { ], onSelected: (action) async { // wait for the popup menu to hide before proceeding with the action - await Future.delayed(Durations.popupMenuAnimation * timeDilation); + await Future.delayed(ADurations.popupMenuAnimation * timeDilation); actionDelegate.onActionSelected(context, entry, collection, action); }, ), diff --git a/lib/widgets/viewer/info/info_page.dart b/lib/widgets/viewer/info/info_page.dart index d8f8f4952..1f3708606 100644 --- a/lib/widgets/viewer/info/info_page.dart +++ b/lib/widgets/viewer/info/info_page.dart @@ -122,7 +122,7 @@ class _InfoPageState extends State { ShowImageNotification().dispatch(context); _scrollController.animateTo( 0, - duration: Durations.pageTransitionAnimation, + duration: ADurations.pageTransitionAnimation, curve: Curves.easeInOut, ); } @@ -271,7 +271,7 @@ class _InfoPageContentState extends State<_InfoPageContent> { } void _onActionDelegateEvent(ActionEvent event) { - Future.delayed(Durations.dialogTransitionAnimation).then((_) { + Future.delayed(ADurations.dialogTransitionAnimation).then((_) { if (event is ActionStartedEvent) { _isEditingMetadataNotifier.value = event.action; } else if (event is ActionEndedEvent) { diff --git a/lib/widgets/viewer/info/metadata/xmp_card.dart b/lib/widgets/viewer/info/metadata/xmp_card.dart index a7185fb1b..4550faa48 100644 --- a/lib/widgets/viewer/info/metadata/xmp_card.dart +++ b/lib/widgets/viewer/info/metadata/xmp_card.dart @@ -116,7 +116,7 @@ class _XmpCardState extends State { ), ), MultiCrossFader( - duration: Durations.xmpStructArrayCardTransition, + duration: ADurations.xmpStructArrayCardTransition, sizeCurve: Curves.easeOutBack, alignment: AlignmentDirectional.topStart, child: Padding( diff --git a/lib/widgets/viewer/info/metadata/xmp_ns/xmp.dart b/lib/widgets/viewer/info/metadata/xmp_ns/xmp.dart index 6bdf34d26..655a8fe5d 100644 --- a/lib/widgets/viewer/info/metadata/xmp_ns/xmp.dart +++ b/lib/widgets/viewer/info/metadata/xmp_ns/xmp.dart @@ -1,5 +1,5 @@ -import 'package:aves/ref/mime_types.dart'; import 'package:aves/ref/metadata/xmp.dart'; +import 'package:aves/ref/mime_types.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/viewer/info/common.dart'; import 'package:aves/widgets/viewer/info/embedded/notifications.dart'; diff --git a/lib/widgets/viewer/overlay/selection_button.dart b/lib/widgets/viewer/overlay/selection_button.dart index 5a3c4ea53..643e3da42 100644 --- a/lib/widgets/viewer/overlay/selection_button.dart +++ b/lib/widgets/viewer/overlay/selection_button.dart @@ -14,7 +14,7 @@ class SelectionButton extends StatelessWidget { final Animation scale; static const double padding = 8; - static const duration = Durations.thumbnailOverlayAnimation; + static const duration = ADurations.thumbnailOverlayAnimation; const SelectionButton({ super.key, diff --git a/lib/widgets/viewer/overlay/thumbnail_preview.dart b/lib/widgets/viewer/overlay/thumbnail_preview.dart index 934ad7518..01f9b57c0 100644 --- a/lib/widgets/viewer/overlay/thumbnail_preview.dart +++ b/lib/widgets/viewer/overlay/thumbnail_preview.dart @@ -25,7 +25,7 @@ class ViewerThumbnailPreview extends StatefulWidget { class _ViewerThumbnailPreviewState extends State { final ValueNotifier _entryIndexNotifier = ValueNotifier(0); - final Debouncer _debouncer = Debouncer(delay: Durations.viewerThumbnailScrollDebounceDelay); + final Debouncer _debouncer = Debouncer(delay: ADurations.viewerThumbnailScrollDebounceDelay); List get entries => widget.entries; diff --git a/lib/widgets/viewer/overlay/viewer_buttons.dart b/lib/widgets/viewer/overlay/viewer_buttons.dart index b64a91f6c..bc80e1141 100644 --- a/lib/widgets/viewer/overlay/viewer_buttons.dart +++ b/lib/widgets/viewer/overlay/viewer_buttons.dart @@ -282,7 +282,7 @@ class ViewerButtonRowContent extends StatelessWidget { onSelected: (action) { _popupExpandedNotifier.value = null; // wait for the popup menu to hide before proceeding with the action - Future.delayed(Durations.popupMenuAnimation * timeDilation, () => actionDelegate.onActionSelected(context, action)); + Future.delayed(ADurations.popupMenuAnimation * timeDilation, () => actionDelegate.onActionSelected(context, action)); }, onCanceled: () { _popupExpandedNotifier.value = null; diff --git a/lib/widgets/viewer/overlay/wallpaper_buttons.dart b/lib/widgets/viewer/overlay/wallpaper_buttons.dart index 9099e46e6..cb579f1f8 100644 --- a/lib/widgets/viewer/overlay/wallpaper_buttons.dart +++ b/lib/widgets/viewer/overlay/wallpaper_buttons.dart @@ -5,7 +5,6 @@ import 'dart:ui' as ui; import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/extensions/images.dart'; import 'package:aves/model/entry/extensions/props.dart'; -import 'package:aves_model/aves_model.dart'; import 'package:aves/services/wallpaper_service.dart'; import 'package:aves/widgets/common/action_mixins/feedback.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; @@ -14,6 +13,7 @@ import 'package:aves/widgets/dialogs/wallpaper_settings_dialog.dart'; import 'package:aves/widgets/viewer/overlay/viewer_buttons.dart'; import 'package:aves/widgets/viewer/video/conductor.dart'; import 'package:aves/widgets/viewer/view/conductor.dart'; +import 'package:aves_model/aves_model.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:latlong2/latlong.dart'; diff --git a/lib/widgets/viewer/visual/controller_mixin.dart b/lib/widgets/viewer/visual/controller_mixin.dart index a86d281c9..b00c44761 100644 --- a/lib/widgets/viewer/visual/controller_mixin.dart +++ b/lib/widgets/viewer/visual/controller_mixin.dart @@ -174,7 +174,7 @@ mixin EntryViewControllerMixin on State { await _onPageChanged(); if (entry.isMotionPhoto && shouldAutoPlayMotionPhoto) { - await Future.delayed(Durations.motionPhotoAutoPlayDelay); + await Future.delayed(ADurations.motionPhotoAutoPlayDelay); if (entry == entryNotifier.value) { multiPageController.page = 1; } diff --git a/lib/widgets/viewer/visual/vector.dart b/lib/widgets/viewer/visual/vector.dart index c1502a7d9..64ecd9cca 100644 --- a/lib/widgets/viewer/visual/vector.dart +++ b/lib/widgets/viewer/visual/vector.dart @@ -5,10 +5,10 @@ import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/extensions/images.dart'; import 'package:aves/model/settings/enums/entry_background.dart'; import 'package:aves/model/settings/settings.dart'; +import 'package:aves/model/view_state.dart'; import 'package:aves/utils/math_utils.dart'; import 'package:aves/widgets/common/fx/checkered_decoration.dart'; import 'package:aves/widgets/viewer/visual/entry_page_view.dart'; -import 'package:aves/model/view_state.dart'; import 'package:aves_model/aves_model.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; diff --git a/lib/widgets/viewer/visual/video/cover.dart b/lib/widgets/viewer/visual/video/cover.dart index 5017a4a3f..0d6cb9aca 100644 --- a/lib/widgets/viewer/visual/video/cover.dart +++ b/lib/widgets/viewer/visual/video/cover.dart @@ -3,8 +3,8 @@ import 'package:aves/model/entry/extensions/images.dart'; import 'package:aves/model/entry/extensions/multipage.dart'; import 'package:aves/theme/durations.dart'; import 'package:aves/widgets/common/thumbnail/image.dart'; -import 'package:aves_video/aves_video.dart'; import 'package:aves_magnifier/aves_magnifier.dart'; +import 'package:aves_video/aves_video.dart'; import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; @@ -106,7 +106,7 @@ class _VideoCoverState extends State { child: AnimatedOpacity( opacity: showCover ? 1 : 0, curve: Curves.easeInCirc, - duration: Durations.viewerVideoPlayerTransition, + duration: ADurations.viewerVideoPlayerTransition, onEnd: () { // while cover is fading out, the same controller is used for both the cover and the video, // and both fire scale boundaries events, so we make sure that in the end