accessibility: disable viewer parallax when animations are disabled

This commit is contained in:
Thibault Deckers 2021-10-07 16:04:43 +09:00
parent c63de86c78
commit 051c6f5846

View file

@ -1,4 +1,6 @@
import 'package:aves/model/entry.dart'; 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/model/source/collection_lens.dart';
import 'package:aves/widgets/common/magnifier/pan/gesture_detector_scope.dart'; import 'package:aves/widgets/common/magnifier/pan/gesture_detector_scope.dart';
import 'package:aves/widgets/common/magnifier/pan/scroll_physics.dart'; import 'package:aves/widgets/common/magnifier/pan/scroll_physics.dart';
@ -54,19 +56,27 @@ class _MultiEntryScrollerState extends State<MultiEntryScroller> with AutomaticK
) )
: _buildViewer(mainEntry); : _buildViewer(mainEntry);
child = AnimatedBuilder( child = Selector<Settings, bool>(
animation: pageController, selector: (context, s) => s.accessibilityAnimations.animate,
builder: (context, child) { builder: (context, animate, child) {
// parallax scrolling return animate
double dx = 0; ? AnimatedBuilder(
if (pageController.hasClients && pageController.position.haveDimensions) { animation: pageController,
final delta = pageController.page! - index; builder: (context, child) {
dx = delta * pageController.position.viewportDimension / 2; // parallax scrolling
} double dx = 0;
return Transform.translate( if (pageController.hasClients && pageController.position.haveDimensions) {
offset: Offset(dx, 0), final delta = pageController.page! - index;
child: child, dx = delta * pageController.position.viewportDimension / 2;
); }
return Transform.translate(
offset: Offset(dx, 0),
child: child,
);
},
child: child,
)
: child!;
}, },
child: child, child: child,
); );