Skip to content

Commit 48effee

Browse files
committed
Responsive Grid Update #1
*Fix null padding error.
1 parent 234a56f commit 48effee

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

lib/responsive_grid.dart

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)