@@ -64,6 +64,12 @@ class ResponsiveGridView extends StatelessWidget {
6464 Widget build (BuildContext context) {
6565 // LayoutBuilder provides constraints required for item sizing calculation.
6666 return LayoutBuilder (builder: (context, constraints) {
67+ // A padding calculation variable that resolves null
68+ // to a temporary zero value. The original null padding
69+ // must be preserved for the [BoxScrollView] to calculate
70+ // an effective padding with SafeArea. Create a
71+ // temporary variable here to avoid overwriting null.
72+ EdgeInsets paddingHolder = padding ?? EdgeInsets .zero;
6773 // The maximum number of items that can fit on one row.
6874 int crossAxisCount;
6975 // The maximum number of items that fit under the max row count.
@@ -73,9 +79,9 @@ class ResponsiveGridView extends StatelessWidget {
7379 // The width of all items and padding.
7480 double crossAxisWidth;
7581 // The maximum width available for items.
76- double crossAxisExtent = constraints.maxWidth - padding .horizontal;
82+ double crossAxisExtent = constraints.maxWidth - paddingHolder .horizontal;
7783 assert (crossAxisExtent > 0 ,
78- '$padding exceeds layout width (${constraints .maxWidth })' );
84+ '$paddingHolder exceeds layout width (${constraints .maxWidth })' );
7985 // Switch between grid delegate behavior.
8086 if (gridDelegate.crossAxisExtent != null ) {
8187 // Fixed item size.
@@ -84,7 +90,7 @@ class ResponsiveGridView extends StatelessWidget {
8490 .floor ();
8591 crossAxisWidth = crossAxisCount *
8692 (gridDelegate.crossAxisExtent + gridDelegate.crossAxisSpacing) +
87- padding .horizontal;
93+ paddingHolder .horizontal;
8894 } else if (gridDelegate.maxCrossAxisExtent != null ) {
8995 // Max item size.
9096 crossAxisCount = (crossAxisExtent /
@@ -97,7 +103,7 @@ class ResponsiveGridView extends StatelessWidget {
97103 usableCrossAxisExtent / crossAxisCount;
98104 crossAxisWidth = crossAxisCount *
99105 (childCrossAxisExtent + gridDelegate.crossAxisSpacing) +
100- padding .horizontal;
106+ paddingHolder .horizontal;
101107 } else {
102108 // Min item size.
103109 crossAxisCount = (crossAxisExtent /
@@ -110,7 +116,7 @@ class ResponsiveGridView extends StatelessWidget {
110116 usableCrossAxisExtent / crossAxisCount;
111117 crossAxisWidth = crossAxisCount *
112118 (childCrossAxisExtent + gridDelegate.crossAxisSpacing) +
113- padding .horizontal;
119+ paddingHolder .horizontal;
114120 }
115121 // Calculate padding adjustment for alignment.
116122 if (alignment == Alignment .centerLeft ||
0 commit comments