import 'package:flutter/material.dart'; // This is where the magic happens. // This functions are responsible to make UI responsive across all the mobile devices. Size size = WidgetsBinding.instance.window.physicalSize / WidgetsBinding.instance.window.devicePixelRatio; // Caution! If you think these are static values and are used to build a static UI, you mustn’t. // These are the Viewport values of your Figma Design. // These are used in the code as a reference to create your UI Responsively. const num FIGMA_DESIGN_WIDTH = 428; const num FIGMA_DESIGN_HEIGHT = 926; const num FIGMA_DESIGN_STATUS_BAR = 47; ///This method is used to get device viewport width. get width { return size.width; } ///This method is used to get device viewport height. get height { num statusBar = MediaQueryData.fromWindow(WidgetsBinding.instance.window).viewPadding.top; num bottomBar = MediaQueryData.fromWindow(WidgetsBinding.instance.window) .viewPadding .bottom; num screenHeight = size.height - statusBar - bottomBar; return screenHeight; } ///This method is used to set padding/margin (for the left and Right side) & width of the screen or widget according to the Viewport width. double getHorizontalSize(double px) { return ((px * width) / FIGMA_DESIGN_WIDTH); } ///This method is used to set padding/margin (for the top and bottom side) & height of the screen or widget according to the Viewport height. double getVerticalSize(double px) { return ((px * height) / (FIGMA_DESIGN_HEIGHT - FIGMA_DESIGN_STATUS_BAR)); } ///This method is used to set smallest px in image height and width double getSize(double px) { var height = getVerticalSize(px); var width = getHorizontalSize(px); if (height < width) { return height.toInt().toDouble(); } else { return width.toInt().toDouble(); } } ///This method is used to set text font size according to Viewport double getFontSize(double px) { return getSize(px); } ///This method is used to set padding responsively EdgeInsetsGeometry getPadding({ double? all, double? left, double? top, double? right, double? bottom, }) { return getMarginOrPadding( all: all, left: left, top: top, right: right, bottom: bottom, ); } ///This method is used to set margin responsively EdgeInsetsGeometry getMargin({ double? all, double? left, double? top, double? right, double? bottom, }) { return getMarginOrPadding( all: all, left: left, top: top, right: right, bottom: bottom, ); } ///This method is used to get padding or margin responsively EdgeInsetsGeometry getMarginOrPadding({ double? all, double? left, double? top, double? right, double? bottom, }) { if (all != null) { left = all; top = all; right = all; bottom = all; } return EdgeInsets.only( left: getHorizontalSize( left ?? 0, ), top: getVerticalSize( top ?? 0, ), right: getHorizontalSize( right ?? 0, ), bottom: getVerticalSize( bottom ?? 0, ), ); }