import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:intl/intl.dart';

/// 响应式尺寸扩展
/// 使用方式: 16.w (宽度适配), 16.h (高度适配), 16.sp (字体适配), 16.r (圆角适配)
extension ResponsiveNum on num {
  /// 宽度适配
  double get w => ScreenUtil().setWidth(this);

  /// 高度适配
  double get h => ScreenUtil().setHeight(this);

  /// 字体大小适配
  double get sp => ScreenUtil().setSp(this);

  /// 圆角适配 (取宽高最小值)
  double get r => ScreenUtil().radius(this);
}

extension NumExtensions on num {
  String get formatted {
    return NumberFormat('#,##0.##').format(this);
  }

  String get formattedCurrency {
    return NumberFormat('#,##0.00').format(this);
  }

  String get formattedPercent {
    return NumberFormat('0.##%').format(this / 100);
  }

  String get compact {
    if (this >= 1000000000) {
      return '${(this / 1000000000).toStringAsFixed(1)}B';
    } else if (this >= 1000000) {
      return '${(this / 1000000).toStringAsFixed(1)}M';
    } else if (this >= 1000) {
      return '${(this / 1000).toStringAsFixed(1)}K';
    }
    return toString();
  }

  String toFixedNoTrailing(int fractionDigits) {
    return toStringAsFixed(fractionDigits).replaceAll(RegExp(r'\.?0+$'), '');
  }
}
