#1102 accessibility: enable/disable more animations
This commit is contained in:
parent
1d2396193b
commit
05bb2ab350
2 changed files with 21 additions and 11 deletions
|
@ -33,12 +33,12 @@ class ViewerVerticalPageView extends StatefulWidget {
|
||||||
final ValueNotifier<AvesEntry?> entryNotifier;
|
final ValueNotifier<AvesEntry?> entryNotifier;
|
||||||
final ViewerController viewerController;
|
final ViewerController viewerController;
|
||||||
final Animation<double> overlayOpacity;
|
final Animation<double> overlayOpacity;
|
||||||
final PageController horizontalPager, verticalPager;
|
final PageController verticalPager, horizontalPager;
|
||||||
final void Function(int page) onVerticalPageChanged, onHorizontalPageChanged;
|
final void Function(int page) onVerticalPageChanged, onHorizontalPageChanged;
|
||||||
final VoidCallback onImagePageRequested;
|
final VoidCallback onImagePageRequested;
|
||||||
final void Function(AvesEntry mainEntry, AvesEntry? pageEntry) onViewDisposed;
|
final void Function(AvesEntry mainEntry, AvesEntry? pageEntry) onViewDisposed;
|
||||||
|
|
||||||
// critically damped spring a bit stiffer than `ScrollPhysics._kDefaultSpring`
|
// critically damped spring (ratio = 1) a bit stiffer than `ScrollPhysics._kDefaultSpring`
|
||||||
static final spring = SpringDescription.withDampingRatio(
|
static final spring = SpringDescription.withDampingRatio(
|
||||||
mass: 0.5,
|
mass: 0.5,
|
||||||
stiffness: 140.0,
|
stiffness: 140.0,
|
||||||
|
@ -78,6 +78,10 @@ class _ViewerVerticalPageViewState extends State<ViewerVerticalPageView> {
|
||||||
|
|
||||||
AvesEntry? get entry => widget.entryNotifier.value;
|
AvesEntry? get entry => widget.entryNotifier.value;
|
||||||
|
|
||||||
|
PageController get verticalPager => widget.verticalPager;
|
||||||
|
|
||||||
|
PageController get horizontalPager => widget.horizontalPager;
|
||||||
|
|
||||||
static const double maximumBrightness = 1.0;
|
static const double maximumBrightness = 1.0;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -146,10 +150,10 @@ class _ViewerVerticalPageViewState extends State<ViewerVerticalPageView> {
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
child: AnimatedBuilder(
|
child: AnimatedBuilder(
|
||||||
animation: widget.verticalPager,
|
animation: verticalPager,
|
||||||
builder: (context, child) {
|
builder: (context, child) {
|
||||||
return Visibility(
|
return Visibility(
|
||||||
visible: widget.verticalPager.page! > 1,
|
visible: verticalPager.page! > 1,
|
||||||
child: child!,
|
child: child!,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -185,7 +189,7 @@ class _ViewerVerticalPageViewState extends State<ViewerVerticalPageView> {
|
||||||
// key is expected by test driver
|
// key is expected by test driver
|
||||||
key: const Key('vertical-pageview'),
|
key: const Key('vertical-pageview'),
|
||||||
scrollDirection: Axis.vertical,
|
scrollDirection: Axis.vertical,
|
||||||
controller: widget.verticalPager,
|
controller: verticalPager,
|
||||||
physics: MagnifierScrollerPhysics(
|
physics: MagnifierScrollerPhysics(
|
||||||
gestureSettings: MediaQuery.gestureSettingsOf(context),
|
gestureSettings: MediaQuery.gestureSettingsOf(context),
|
||||||
parent: SpringyScrollPhysics(
|
parent: SpringyScrollPhysics(
|
||||||
|
@ -217,7 +221,7 @@ class _ViewerVerticalPageViewState extends State<ViewerVerticalPageView> {
|
||||||
child = MultiEntryScroller(
|
child = MultiEntryScroller(
|
||||||
collection: collection!,
|
collection: collection!,
|
||||||
viewerController: widget.viewerController,
|
viewerController: widget.viewerController,
|
||||||
pageController: widget.horizontalPager,
|
pageController: horizontalPager,
|
||||||
onPageChanged: widget.onHorizontalPageChanged,
|
onPageChanged: widget.onHorizontalPageChanged,
|
||||||
onViewDisposed: widget.onViewDisposed,
|
onViewDisposed: widget.onViewDisposed,
|
||||||
);
|
);
|
||||||
|
@ -299,8 +303,7 @@ class _ViewerVerticalPageViewState extends State<ViewerVerticalPageView> {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _goToHorizontalPage(int delta, {required bool animate}) {
|
void _goToHorizontalPage(int delta, {required bool animate}) {
|
||||||
final pageController = widget.horizontalPager;
|
final page = horizontalPager.page?.round();
|
||||||
final page = pageController.page?.round();
|
|
||||||
final _collection = collection;
|
final _collection = collection;
|
||||||
if (page != null && _collection != null) {
|
if (page != null && _collection != null) {
|
||||||
var target = page + delta;
|
var target = page + delta;
|
||||||
|
@ -308,19 +311,19 @@ class _ViewerVerticalPageViewState extends State<ViewerVerticalPageView> {
|
||||||
target = target.clamp(0, _collection.entryCount - 1);
|
target = target.clamp(0, _collection.entryCount - 1);
|
||||||
}
|
}
|
||||||
if (animate) {
|
if (animate) {
|
||||||
pageController.animateToPage(
|
horizontalPager.animateToPage(
|
||||||
target,
|
target,
|
||||||
duration: ADurations.viewerHorizontalPageAnimation,
|
duration: ADurations.viewerHorizontalPageAnimation,
|
||||||
curve: Curves.easeInOutCubic,
|
curve: Curves.easeInOutCubic,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
pageController.jumpToPage(target);
|
horizontalPager.jumpToPage(target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onVerticalPageControllerChanged() {
|
void _onVerticalPageControllerChanged() {
|
||||||
final page = widget.verticalPager.page!;
|
final page = verticalPager.page!;
|
||||||
|
|
||||||
final opacity = min(1.0, page);
|
final opacity = min(1.0, page);
|
||||||
_backgroundOpacityNotifier.value = opacity * opacity;
|
_backgroundOpacityNotifier.value = opacity * opacity;
|
||||||
|
|
|
@ -712,16 +712,23 @@ class _EntryViewerStackState extends State<EntryViewerStack> with EntryViewContr
|
||||||
void _onVerticalPageChanged(int page) {
|
void _onVerticalPageChanged(int page) {
|
||||||
_currentVerticalPage.value = page;
|
_currentVerticalPage.value = page;
|
||||||
_overrideSnackBarMargin();
|
_overrideSnackBarMargin();
|
||||||
|
final animate = context.read<Settings>().animate;
|
||||||
switch (page) {
|
switch (page) {
|
||||||
case transitionPage:
|
case transitionPage:
|
||||||
dismissFeedback(context);
|
dismissFeedback(context);
|
||||||
_popVisual();
|
_popVisual();
|
||||||
|
if (!animate) {
|
||||||
|
_verticalPager.jumpToPage(page);
|
||||||
|
}
|
||||||
case imagePage:
|
case imagePage:
|
||||||
reportService.log('Nav move to Image page');
|
reportService.log('Nav move to Image page');
|
||||||
case infoPage:
|
case infoPage:
|
||||||
reportService.log('Nav move to Info page');
|
reportService.log('Nav move to Info page');
|
||||||
// prevent hero when viewer is offscreen
|
// prevent hero when viewer is offscreen
|
||||||
_heroInfoNotifier.value = null;
|
_heroInfoNotifier.value = null;
|
||||||
|
if (!animate) {
|
||||||
|
_verticalPager.jumpToPage(page);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue