ResponsivityHelper constructor
ResponsivityHelper({
- required MediaQueryData mediaQueryData,
- bool useDesignSizeAsReference = false,
- FontSizeMode fontSizeModeParam = FontSizeMode.devicePixelRatio,
- Size screenReferenceSizeParam = const Size(0, 0),
Implementation
ResponsivityHelper({
required MediaQueryData mediaQueryData,
bool useDesignSizeAsReference = false,
FontSizeMode fontSizeModeParam = FontSizeMode.devicePixelRatio,
Size screenReferenceSizeParam = const Size(0, 0),
}) : assert(
(fontSizeModeParam != FontSizeMode.referenceScreenValue ||
(fontSizeModeParam == FontSizeMode.referenceScreenValue &&
screenReferenceSizeParam.height > 10)),
'if useSPForFontSize is false you must specify the screen height of the designs you are following.'),
assert(
!(useDesignSizeAsReference == true &&
(screenReferenceSizeParam.height < 10 ||
screenReferenceSizeParam.width < 10)),
'If useDesignSizeAsReference is true, then you need to specify the screen size that you will take as reference') {
fontSizeMode = fontSizeModeParam;
screenHeightPxReference = screenReferenceSizeParam.height;
screenWidthPxReference = screenReferenceSizeParam.width;
screenData = mediaQueryData;
screenWidth = mediaQueryData.size.width;
screenHeight = mediaQueryData.size.height;
horizontalUnit = useDesignSizeAsReference
? screenWidth / screenWidthPxReference
: screenWidth / 100;
verticalUnit = useDesignSizeAsReference
? screenHeight / screenHeightPxReference
: screenHeight / 100;
_safeAreaHorizontal =
mediaQueryData.padding.left + mediaQueryData.padding.right;
_safeAreaVertical =
mediaQueryData.padding.top + mediaQueryData.padding.bottom;
safeBlockHorizontal = useDesignSizeAsReference
? (screenWidth - _safeAreaHorizontal) / screenWidthPxReference
: (screenWidth - _safeAreaHorizontal) / 100;
safeBlockVertical = useDesignSizeAsReference
? (screenHeight - _safeAreaVertical) / screenHeightPxReference
: (screenHeight - _safeAreaVertical) / 100;
orientation = mediaQueryData.orientation;
deviceScreenType = getDeviceType(mediaQueryData);
safeAreaPadding = mediaQueryData.padding;
}