This commit is contained in:
Thibault Deckers 2024-06-25 22:16:37 +02:00
parent 4a0009f4f0
commit b51769e2c6
14 changed files with 17 additions and 27 deletions

View file

@ -8,6 +8,7 @@ import 'package:aves/model/filters/favourite.dart';
import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/filters/mime.dart'; import 'package:aves/model/filters/mime.dart';
import 'package:aves/model/settings/defaults.dart'; import 'package:aves/model/settings/defaults.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/enums/map_style.dart'; import 'package:aves/model/settings/enums/map_style.dart';
import 'package:aves/model/settings/modules/app.dart'; import 'package:aves/model/settings/modules/app.dart';
import 'package:aves/model/settings/modules/collection.dart'; import 'package:aves/model/settings/modules/collection.dart';
@ -206,6 +207,8 @@ class Settings with ChangeNotifier, SettingsAccess, AppSettings, DisplaySettings
AccessibilityAnimations get accessibilityAnimations => getEnumOrDefault(SettingKeys.accessibilityAnimationsKey, SettingsDefaults.accessibilityAnimations, AccessibilityAnimations.values); AccessibilityAnimations get accessibilityAnimations => getEnumOrDefault(SettingKeys.accessibilityAnimationsKey, SettingsDefaults.accessibilityAnimations, AccessibilityAnimations.values);
bool get animate => accessibilityAnimations.animate;
set accessibilityAnimations(AccessibilityAnimations newValue) => set(SettingKeys.accessibilityAnimationsKey, newValue.toString()); set accessibilityAnimations(AccessibilityAnimations newValue) => set(SettingKeys.accessibilityAnimationsKey, newValue.toString());
AccessibilityTimeout get timeToTakeAction => getEnumOrDefault(SettingKeys.timeToTakeActionKey, SettingsDefaults.timeToTakeAction, AccessibilityTimeout.values); AccessibilityTimeout get timeToTakeAction => getEnumOrDefault(SettingKeys.timeToTakeActionKey, SettingsDefaults.timeToTakeAction, AccessibilityTimeout.values);

View file

@ -8,7 +8,6 @@ import 'package:aves/model/apps.dart';
import 'package:aves/model/device.dart'; import 'package:aves/model/device.dart';
import 'package:aves/model/filters/recent.dart'; import 'package:aves/model/filters/recent.dart';
import 'package:aves/model/settings/defaults.dart'; import 'package:aves/model/settings/defaults.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/enums/display_refresh_rate_mode.dart'; import 'package:aves/model/settings/enums/display_refresh_rate_mode.dart';
import 'package:aves/model/settings/enums/screen_on.dart'; import 'package:aves/model/settings/enums/screen_on.dart';
import 'package:aves/model/settings/enums/theme_brightness.dart'; import 'package:aves/model/settings/enums/theme_brightness.dart';
@ -325,7 +324,7 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
WidgetsBinding.instance.addPostFrameCallback((_) => AvesApp.setSystemUIStyle(Theme.of(context))); WidgetsBinding.instance.addPostFrameCallback((_) => AvesApp.setSystemUIStyle(Theme.of(context)));
} }
return Selector<Settings, bool>( return Selector<Settings, bool>(
selector: (context, s) => s.initialized ? s.accessibilityAnimations.animate : true, selector: (context, s) => s.initialized ? s.animate : true,
builder: (context, areAnimationsEnabled, child) { builder: (context, areAnimationsEnabled, child) {
return FutureBuilder<bool>( return FutureBuilder<bool>(
future: _shouldUseBoldFontLoader, future: _shouldUseBoldFontLoader,
@ -668,7 +667,7 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
class AvesScrollBehavior extends MaterialScrollBehavior { class AvesScrollBehavior extends MaterialScrollBehavior {
@override @override
Widget buildOverscrollIndicator(BuildContext context, Widget child, ScrollableDetails details) { Widget buildOverscrollIndicator(BuildContext context, Widget child, ScrollableDetails details) {
final animate = context.select<Settings, bool>((v) => v.accessibilityAnimations.animate); final animate = context.select<Settings, bool>((v) => v.animate);
return animate return animate
? StretchingOverscrollIndicator( ? StretchingOverscrollIndicator(
axisDirection: details.direction, axisDirection: details.direction,

View file

@ -7,7 +7,6 @@ import 'package:aves/model/filters/query.dart';
import 'package:aves/model/filters/trash.dart'; import 'package:aves/model/filters/trash.dart';
import 'package:aves/model/highlight.dart'; import 'package:aves/model/highlight.dart';
import 'package:aves/model/selection.dart'; import 'package:aves/model/selection.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/model/source/collection_source.dart'; import 'package:aves/model/source/collection_source.dart';
@ -217,7 +216,7 @@ class _CollectionPageState extends State<CollectionPage> {
await Future.delayed(delayDuration + ADurations.highlightScrollInitDelay); await Future.delayed(delayDuration + ADurations.highlightScrollInitDelay);
if (!mounted) return; if (!mounted) return;
final animate = context.read<Settings>().accessibilityAnimations.animate; final animate = context.read<Settings>().animate;
context.read<HighlightInfo>().trackItem(item, animate: animate, highlightItem: item); context.read<HighlightInfo>().trackItem(item, animate: animate, highlightItem: item);
} }
} }

View file

@ -1,7 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'dart:math'; import 'dart:math';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/enums/accessibility_timeout.dart'; import 'package:aves/model/settings/enums/accessibility_timeout.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/theme/colors.dart'; import 'package:aves/theme/colors.dart';
@ -224,7 +223,7 @@ class _ReportOverlayState<T> extends State<ReportOverlay<T>> with SingleTickerPr
final theme = Theme.of(context); final theme = Theme.of(context);
final colorScheme = theme.colorScheme; final colorScheme = theme.colorScheme;
final progressColor = colorScheme.primary; final progressColor = colorScheme.primary;
final animate = context.select<Settings, bool>((v) => v.accessibilityAnimations.animate); final animate = context.select<Settings, bool>((v) => v.animate);
return PopScope( return PopScope(
canPop: false, canPop: false,
child: StreamBuilder<T>( child: StreamBuilder<T>(

View file

@ -1,6 +1,5 @@
import 'dart:math'; import 'dart:math';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/theme/colors.dart'; import 'package:aves/theme/colors.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
@ -107,7 +106,7 @@ class _AvesDonutState extends State<AvesDonut> with AutomaticKeepAliveClientMixi
), ),
charts.PieChart( charts.PieChart(
series, series,
animate: context.select<Settings, bool>((v) => v.accessibilityAnimations.animate), animate: context.select<Settings, bool>((v) => v.animate),
animationDuration: widget.animationDuration, animationDuration: widget.animationDuration,
defaultRenderer: charts.ArcRendererConfig<String>( defaultRenderer: charts.ArcRendererConfig<String>(
arcWidth: 16, arcWidth: 16,

View file

@ -418,7 +418,7 @@ class _AvesFilterChipState extends State<AvesFilterChip> {
), ),
); );
final animate = context.select<Settings, bool>((v) => v.accessibilityAnimations.animate); final animate = context.select<Settings, bool>((v) => v.animate);
if (animate && (widget.heroType == HeroType.always || widget.heroType == HeroType.onTap && _tapped)) { if (animate && (widget.heroType == HeroType.always || widget.heroType == HeroType.onTap && _tapped)) {
chip = Hero( chip = Hero(
tag: filter, tag: filter,

View file

@ -1,4 +1,3 @@
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -9,8 +8,7 @@ class DurationsProvider extends ProxyProvider<Settings, DurationsData> {
super.child, super.child,
}) : super( }) : super(
update: (context, settings, __) { update: (context, settings, __) {
final enabled = settings.accessibilityAnimations.animate; return settings.animate ? DurationsData() : DurationsData.noAnimation();
return enabled ? DurationsData() : DurationsData.noAnimation();
}, },
); );
} }

View file

@ -4,7 +4,6 @@ import 'package:aves/image_providers/thumbnail_provider.dart';
import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/entry.dart';
import 'package:aves/model/entry/extensions/images.dart'; import 'package:aves/model/entry/extensions/images.dart';
import 'package:aves/model/entry/extensions/props.dart'; import 'package:aves/model/entry/extensions/props.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/enums/entry_background.dart'; import 'package:aves/model/settings/enums/entry_background.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/services/common/services.dart'; import 'package:aves/services/common/services.dart';
@ -190,7 +189,7 @@ class _ThumbnailImageState extends State<ThumbnailImage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final animate = context.select<Settings, bool>((v) => v.accessibilityAnimations.animate); final animate = context.select<Settings, bool>((v) => v.animate);
if (!entry.canDecode || _lastException != null) { if (!entry.canDecode || _lastException != null) {
return _buildError(context, animate); return _buildError(context, animate);
} }

View file

@ -5,7 +5,6 @@ import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/highlight.dart'; import 'package:aves/model/highlight.dart';
import 'package:aves/model/query.dart'; import 'package:aves/model/query.dart';
import 'package:aves/model/selection.dart'; import 'package:aves/model/selection.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_source.dart'; import 'package:aves/model/source/collection_source.dart';
import 'package:aves/model/vaults/vaults.dart'; import 'package:aves/model/vaults/vaults.dart';
@ -544,7 +543,7 @@ class _FilterSectionedContentState<T extends CollectionFilter> extends State<_Fi
await Future.delayed(ADurations.highlightScrollInitDelay); await Future.delayed(ADurations.highlightScrollInitDelay);
final animate = context.read<Settings>().accessibilityAnimations.animate; final animate = context.read<Settings>().animate;
highlightInfo.trackItem(item, animate: animate, highlightItem: filter); highlightInfo.trackItem(item, animate: animate, highlightItem: filter);
} }
} }

View file

@ -1,5 +1,4 @@
import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/theme/themes.dart'; import 'package:aves/theme/themes.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
@ -36,7 +35,7 @@ class FilterTable<T extends Comparable> extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final countFormatter = NumberFormat.decimalPattern(context.locale); final countFormatter = NumberFormat.decimalPattern(context.locale);
final animate = context.select<Settings, bool>((v) => v.accessibilityAnimations.animate); final animate = context.select<Settings, bool>((v) => v.animate);
final sortedEntries = entryCountMap.entries.toList(); final sortedEntries = entryCountMap.entries.toList();
if (sortByCount) { if (sortByCount) {

View file

@ -6,7 +6,6 @@ import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/filters/location.dart'; import 'package:aves/model/filters/location.dart';
import 'package:aves/model/filters/rating.dart'; import 'package:aves/model/filters/rating.dart';
import 'package:aves/model/filters/tag.dart'; import 'package:aves/model/filters/tag.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/model/source/collection_source.dart'; import 'package:aves/model/source/collection_source.dart';
@ -439,7 +438,7 @@ class _LocationIndicator extends StatelessWidget {
lineHeight: lineHeight, lineHeight: lineHeight,
backgroundColor: Themes.secondLayerColor(context), backgroundColor: Themes.secondLayerColor(context),
progressColor: theme.colorScheme.primary, progressColor: theme.colorScheme.primary,
animation: context.select<Settings, bool>((v) => v.accessibilityAnimations.animate), animation: context.select<Settings, bool>((v) => v.animate),
isRTL: context.isRtl, isRTL: context.isRtl,
barRadius: barRadius, barRadius: barRadius,
padding: EdgeInsets.symmetric(horizontal: lineHeight), padding: EdgeInsets.symmetric(horizontal: lineHeight),

View file

@ -1,7 +1,6 @@
import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/entry.dart';
import 'package:aves/model/entry/extensions/multipage.dart'; import 'package:aves/model/entry/extensions/multipage.dart';
import 'package:aves/model/entry/extensions/props.dart'; import 'package:aves/model/entry/extensions/props.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/enums/viewer_transition.dart'; import 'package:aves/model/settings/enums/viewer_transition.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
@ -71,7 +70,7 @@ class _MultiEntryScrollerState extends State<MultiEntryScroller> with AutomaticK
: _buildViewer(mainEntry); : _buildViewer(mainEntry);
return Selector<Settings, bool>( return Selector<Settings, bool>(
selector: (context, s) => s.accessibilityAnimations.animate, selector: (context, s) => s.animate,
builder: (context, animate, child) { builder: (context, animate, child) {
if (!animate) return child!; if (!animate) return child!;
return AnimatedBuilder( return AnimatedBuilder(

View file

@ -9,7 +9,6 @@ import 'package:aves/model/entry/extensions/props.dart';
import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/filters/trash.dart'; import 'package:aves/model/filters/trash.dart';
import 'package:aves/model/highlight.dart'; import 'package:aves/model/highlight.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/enums/accessibility_timeout.dart'; import 'package:aves/model/settings/enums/accessibility_timeout.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
@ -702,7 +701,7 @@ class _EntryViewerStackState extends State<EntryViewerStack> with EntryViewContr
} }
Future<void> _goToVerticalPage(int page) async { Future<void> _goToVerticalPage(int page) async {
if (settings.accessibilityAnimations.animate) { if (settings.animate) {
final start = _verticalPager.offset; final start = _verticalPager.offset;
final end = _verticalPager.position.viewportDimension * page; final end = _verticalPager.position.viewportDimension * page;
final simulation = ScrollSpringSimulation(ViewerVerticalPageView.spring, start, end, 0); final simulation = ScrollSpringSimulation(ViewerVerticalPageView.spring, start, end, 0);

View file

@ -3,7 +3,6 @@ import 'dart:async';
import 'package:aves/app_mode.dart'; import 'package:aves/app_mode.dart';
import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/entry.dart';
import 'package:aves/model/entry/extensions/props.dart'; import 'package:aves/model/entry/extensions/props.dart';
import 'package:aves/model/settings/enums/accessibility_animations.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/view_state.dart'; import 'package:aves/model/view_state.dart';
import 'package:aves/services/common/services.dart'; import 'package:aves/services/common/services.dart';
@ -149,7 +148,7 @@ class _EntryPageViewState extends State<EntryPageView> with TickerProviderStateM
); );
} }
final animate = context.select<Settings, bool>((v) => v.accessibilityAnimations.animate); final animate = context.select<Settings, bool>((v) => v.animate);
if (animate) { if (animate) {
child = Consumer<HeroInfo?>( child = Consumer<HeroInfo?>(
builder: (context, info, child) => Hero( builder: (context, info, child) => Hero(