import 'package:flutter/widgets.dart';

/// 접근성 설정에 따른 모션 축소 여부 헬퍼
class ReduceMotion {
  /// 플랫폼 접근성 설정을 기반으로 모션 축소 여부 반환 (context 없이 사용)
  static bool platform() {
    final features =
        WidgetsBinding.instance.platformDispatcher.accessibilityFeatures;
    // disableAnimations 신뢰
    return features.disableAnimations;
  }

  /// MediaQuery/플랫폼 정보를 활용해 런타임에서 모션 축소 여부 반환
  static bool isEnabled(BuildContext context) {
    final mq = MediaQuery.maybeOf(context);
    if (mq != null) {
      // accessibleNavigation == 사용자가 단순한 네비게이션/애니메이션 선호
      if (mq.accessibleNavigation) return true;
    }
    return platform();
  }

  /// 모션 강도 스케일 유틸리티
  static double scale(BuildContext context,
      {required double normal, required double reduced}) {
    return isEnabled(context) ? reduced : normal;
  }

  /// 파티클 개수 등 정수 스케일링
  static int count(BuildContext context,
      {required int normal, required int reduced}) {
    return isEnabled(context) ? reduced : normal;
  }
}
