import 'package:flutter/material.dart';
import 'dart:math' as math;

extension SizeExtension on BuildContext {
  double get sf {
    final Size size = MediaQuery.of(this).size;
    
    // 1. Definimos os valores base do design (geralmente feitos no Figma/Adobe XD)
    const double baseWidth = 375;
    const double baseHeight = 812;

    // 2. Calculamos o rácio de largura e altura
    double scaleW = size.width / baseWidth;
    double scaleH = size.height / baseHeight;

    // 3. Usamos a média ou o menor valor para manter a proporção
    // O 'min' evita que o texto estique demasiado se o ecrã for muito alto ou largo
    double scale = math.min(scaleW, scaleH);

    // 4. Segurança (Clamping): Não deixa as coisas ficarem minúsculas 
    // nem exageradamente grandes em tablets.
    return scale.clamp(0.8, 1.4); 
  }

  // Atalhos úteis para facilitar o código
  double get screenWidth => MediaQuery.of(this).size.width;
  double get screenHeight => MediaQuery.of(this).size.height;
  
  // Verifica se é Tablet (opcional)
  bool get isTablet => screenWidth > 600;
}