// responsive.dart // Utility class for handling responsive design in Flutter apps. Provides helpers for device type checks, scaling, and adaptive sizing. import 'package:flutter/material.dart'; /// The Responsive class provides static methods to help adapt UI to different screen sizes (mobile, tablet, desktop). class Responsive { /// Returns true if the device is considered a mobile (width < 600px). static bool isMobile(BuildContext context) => MediaQuery.of(context).size.width < 600; /// Returns true if the device is considered a tablet (600px <= width < 1200px). static bool isTablet(BuildContext context) => MediaQuery.of(context).size.width >= 600 && MediaQuery.of(context).size.width < 1200; /// Returns true if the device is considered a desktop (width >= 1200px). static bool isDesktop(BuildContext context) => MediaQuery.of(context).size.width >= 1200; /// Returns the current screen width in logical pixels. static double getWidth(BuildContext context) => MediaQuery.of(context).size.width; /// Returns the current screen height in logical pixels. static double getHeight(BuildContext context) => MediaQuery.of(context).size.height; /// Returns a width scaled by the given percentage of the screen width. static double getScaledWidth(BuildContext context, double percentage) => getWidth(context) * (percentage / 100); /// Returns a height scaled by the given percentage of the screen height. static double getScaledHeight(BuildContext context, double percentage) => getHeight(context) * (percentage / 100); /// Returns appropriate padding based on device type (mobile/tablet/desktop). static EdgeInsets getPadding(BuildContext context) { if (isMobile(context)) { return const EdgeInsets.all(16.0); } else if (isTablet(context)) { return const EdgeInsets.all(24.0); } else { return const EdgeInsets.all(32.0); } } /// Returns a font size scaled for the device type. static double getFontSize(BuildContext context, double baseSize) { if (isMobile(context)) { return baseSize; } else if (isTablet(context)) { return baseSize * 1.2; } else { return baseSize * 1.4; } } /// Returns an icon size scaled for the device type. static double getIconSize(BuildContext context, double baseSize) { if (isMobile(context)) { return baseSize; } else if (isTablet(context)) { return baseSize * 1.2; } else { return baseSize * 1.4; } } }