mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-06 05:15:51 -06:00
90 lines
2.7 KiB
Dart
90 lines
2.7 KiB
Dart
import 'dart:ui';
|
|
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter_animate/flutter_animate.dart';
|
|
import 'package:hive/hive.dart';
|
|
import 'package:paperless_mobile/core/database/hive/hive_config.dart';
|
|
import 'package:paperless_mobile/core/database/hive/hive_extensions.dart';
|
|
import 'package:paperless_mobile/features/settings/view/widgets/global_settings_builder.dart';
|
|
import 'package:paperless_mobile/routing/navigation_keys.dart';
|
|
|
|
extension AccessibilityAwareAnimationDurationExtension on Duration {
|
|
Duration accessible() {
|
|
bool shouldDisableAnimations = WidgetsBinding.instance.disableAnimations ||
|
|
Hive.globalSettingsBox.getValue()!.disableAnimations;
|
|
// print(shouldDisableAnimations);
|
|
if (shouldDisableAnimations) {
|
|
return 0.seconds;
|
|
}
|
|
return this;
|
|
}
|
|
}
|
|
|
|
extension AccessibleHero on Hero {
|
|
Widget accessible() {
|
|
return GlobalSettingsBuilder(
|
|
builder: (context, settings) {
|
|
return HeroMode(
|
|
enabled: WidgetsBinding.instance.disableAnimations ||
|
|
!settings.disableAnimations,
|
|
child: this,
|
|
);
|
|
},
|
|
);
|
|
// bool shouldDisableAnimations = WidgetsBinding.instance.disableAnimations ||
|
|
// Hive.globalSettingsBox.getValue()!.disableAnimations;
|
|
// return _AccessibilityAwareObserverWidget(
|
|
// accessibilityAwareBuilder: (context, accessibilityFeatures) {
|
|
// return HeroMode(
|
|
// enabled: !accessibilityFeatures.disableAnimations,
|
|
// child: this,
|
|
// );
|
|
// },
|
|
// );
|
|
}
|
|
}
|
|
|
|
class _AccessibilityAwareObserverWidget extends StatefulWidget {
|
|
final Widget Function(
|
|
BuildContext context,
|
|
AccessibilityFeatures accessibilityFeatures,
|
|
) accessibilityAwareBuilder;
|
|
const _AccessibilityAwareObserverWidget({
|
|
super.key,
|
|
required this.accessibilityAwareBuilder,
|
|
});
|
|
|
|
@override
|
|
State<_AccessibilityAwareObserverWidget> createState() =>
|
|
_AccessibilityAwareObserverWidgetState();
|
|
}
|
|
|
|
class _AccessibilityAwareObserverWidgetState
|
|
extends State<_AccessibilityAwareObserverWidget>
|
|
with WidgetsBindingObserver {
|
|
late final AccessibilityFeatures _accessibilityFeatures;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_accessibilityFeatures = WidgetsBinding.instance.accessibilityFeatures;
|
|
}
|
|
|
|
@override
|
|
void didChangeAccessibilityFeatures() {
|
|
super.didChangeAccessibilityFeatures();
|
|
setState(() {
|
|
_accessibilityFeatures = WidgetsBinding.instance.accessibilityFeatures;
|
|
});
|
|
print("Accessibility features changed");
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return widget.accessibilityAwareBuilder(
|
|
context,
|
|
_accessibilityFeatures,
|
|
);
|
|
}
|
|
}
|