@@ -3,7 +3,7 @@ import 'dart:math';
33import 'package:flutter/material.dart' ;
44
55class ResponsiveScaledBox extends StatelessWidget {
6- final double width;
6+ final double ? width;
77 final Widget child;
88 final bool autoCalculateMediaQueryData;
99
@@ -16,54 +16,58 @@ class ResponsiveScaledBox extends StatelessWidget {
1616
1717 @override
1818 Widget build (BuildContext context) {
19- return LayoutBuilder (
20- builder: (context, constraints) {
21- MediaQueryData mediaQueryData = MediaQuery .of (context);
22-
23- double aspectRatio = constraints.maxWidth / constraints.maxHeight;
24- double scaledWidth = width;
25- double scaledHeight = width / aspectRatio;
26-
27- bool overrideMediaQueryData = autoCalculateMediaQueryData &&
28- (mediaQueryData.size ==
29- Size (constraints.maxWidth, constraints.maxHeight));
30-
31- EdgeInsets scaledViewInsets = getScaledViewInsets (
32- mediaQueryData: mediaQueryData,
33- screenSize: mediaQueryData.size,
34- scaledSize: Size (scaledWidth, scaledHeight));
35- EdgeInsets scaledViewPadding = getScaledViewPadding (
36- mediaQueryData: mediaQueryData,
37- screenSize: mediaQueryData.size,
38- scaledSize: Size (scaledWidth, scaledHeight));
39- EdgeInsets scaledPadding = getScaledPadding (
40- padding: scaledViewPadding, insets: scaledViewInsets);
41-
42- Widget childHolder = FittedBox (
43- fit: BoxFit .fitWidth,
44- alignment: Alignment .topCenter,
45- child: Container (
46- width: width,
47- height: scaledHeight,
48- alignment: Alignment .center,
49- child: child,
50- ),
51- );
52-
53- if (overrideMediaQueryData) {
54- return MediaQuery (
55- data: mediaQueryData.copyWith (
56- size: Size (scaledWidth, scaledHeight),
57- viewInsets: scaledViewInsets,
58- viewPadding: scaledViewPadding,
59- padding: scaledPadding),
60- child: childHolder,
19+ if (width != null ) {
20+ return LayoutBuilder (
21+ builder: (context, constraints) {
22+ MediaQueryData mediaQueryData = MediaQuery .of (context);
23+
24+ double aspectRatio = constraints.maxWidth / constraints.maxHeight;
25+ double scaledWidth = width! ;
26+ double scaledHeight = width! / aspectRatio;
27+
28+ bool overrideMediaQueryData = autoCalculateMediaQueryData &&
29+ (mediaQueryData.size ==
30+ Size (constraints.maxWidth, constraints.maxHeight));
31+
32+ EdgeInsets scaledViewInsets = getScaledViewInsets (
33+ mediaQueryData: mediaQueryData,
34+ screenSize: mediaQueryData.size,
35+ scaledSize: Size (scaledWidth, scaledHeight));
36+ EdgeInsets scaledViewPadding = getScaledViewPadding (
37+ mediaQueryData: mediaQueryData,
38+ screenSize: mediaQueryData.size,
39+ scaledSize: Size (scaledWidth, scaledHeight));
40+ EdgeInsets scaledPadding = getScaledPadding (
41+ padding: scaledViewPadding, insets: scaledViewInsets);
42+
43+ Widget childHolder = FittedBox (
44+ fit: BoxFit .fitWidth,
45+ alignment: Alignment .topCenter,
46+ child: Container (
47+ width: width,
48+ height: scaledHeight,
49+ alignment: Alignment .center,
50+ child: child,
51+ ),
6152 );
62- }
6353
64- return childHolder;
65- },
66- );
54+ if (overrideMediaQueryData) {
55+ return MediaQuery (
56+ data: mediaQueryData.copyWith (
57+ size: Size (scaledWidth, scaledHeight),
58+ viewInsets: scaledViewInsets,
59+ viewPadding: scaledViewPadding,
60+ padding: scaledPadding),
61+ child: childHolder,
62+ );
63+ }
64+
65+ return childHolder;
66+ },
67+ );
68+ }
69+
70+ return child;
6771 }
6872
6973 EdgeInsets getScaledViewInsets (
0 commit comments