From 051c6f58469907248fcce523f6072c1eb2ddf812 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Thu, 7 Oct 2021 16:04:43 +0900 Subject: [PATCH] accessibility: disable viewer parallax when animations are disabled --- .../viewer/entry_horizontal_pager.dart | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/lib/widgets/viewer/entry_horizontal_pager.dart b/lib/widgets/viewer/entry_horizontal_pager.dart index 82a63fd79..86eddea63 100644 --- a/lib/widgets/viewer/entry_horizontal_pager.dart +++ b/lib/widgets/viewer/entry_horizontal_pager.dart @@ -1,4 +1,6 @@ import 'package:aves/model/entry.dart'; +import 'package:aves/model/settings/accessibility_animations.dart'; +import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/widgets/common/magnifier/pan/gesture_detector_scope.dart'; import 'package:aves/widgets/common/magnifier/pan/scroll_physics.dart'; @@ -54,19 +56,27 @@ class _MultiEntryScrollerState extends State with AutomaticK ) : _buildViewer(mainEntry); - child = AnimatedBuilder( - animation: pageController, - builder: (context, child) { - // parallax scrolling - double dx = 0; - if (pageController.hasClients && pageController.position.haveDimensions) { - final delta = pageController.page! - index; - dx = delta * pageController.position.viewportDimension / 2; - } - return Transform.translate( - offset: Offset(dx, 0), - child: child, - ); + child = Selector( + selector: (context, s) => s.accessibilityAnimations.animate, + builder: (context, animate, child) { + return animate + ? AnimatedBuilder( + animation: pageController, + builder: (context, child) { + // parallax scrolling + double dx = 0; + if (pageController.hasClients && pageController.position.haveDimensions) { + final delta = pageController.page! - index; + dx = delta * pageController.position.viewportDimension / 2; + } + return Transform.translate( + offset: Offset(dx, 0), + child: child, + ); + }, + child: child, + ) + : child!; }, child: child, );