@@ -3,8 +3,8 @@ import 'package:flutter/widgets.dart';
33
44class ResponsiveRowColumn extends StatelessWidget {
55 final List <ResponsiveRowColumnItem > children;
6- final isRow;
7- final isColumn;
6+ final bool isRow;
7+ final bool isColumn;
88 final MainAxisAlignment rowMainAxisAlignment;
99 final MainAxisSize rowMainAxisSize;
1010 final CrossAxisAlignment rowCrossAxisAlignment;
@@ -49,7 +49,8 @@ class ResponsiveRowColumn extends StatelessWidget {
4949
5050 @override
5151 Widget build (BuildContext context) {
52- assert (isRow != null || isColumn != null );
52+ assert (isRow != null || isColumn != null ,
53+ "Missing default isRow or isColumn value." );
5354 assert (! (isRow != null && isColumn != null ),
5455 "isRow and isColumn are mutually exclusive and cannot be used simultaneously." );
5556 bool rowColumn;
@@ -105,7 +106,7 @@ class ResponsiveRowColumn extends StatelessWidget {
105106 // Add padding between items.
106107 List <Widget > widgetList = [];
107108 for (int i = 0 ; i < childrenHolder.length; i++ ) {
108- widgetList.add (childrenHolder[i]);
109+ widgetList.add (childrenHolder[i]. copyWith (rowColumn : rowColumn) );
109110 if (spacing != null && i != childrenHolder.length - 1 )
110111 widgetList.add (Padding (padding: EdgeInsets .only (bottom: spacing)));
111112 }
@@ -117,24 +118,53 @@ class ResponsiveRowColumnItem extends StatelessWidget {
117118 final Widget child;
118119 final int rowOrder;
119120 final int columnOrder;
120- final bool isFlexible;
121- final int flex;
122- final FlexFit flexFit;
121+ final bool rowColumn;
122+ final int rowFlex;
123+ final int columnFlex;
124+ final FlexFit rowFlexFit;
125+ final FlexFit columnFlexFit;
123126
124127 const ResponsiveRowColumnItem (
125128 {Key key,
126129 @required this .child,
127130 this .rowOrder = 1073741823 ,
128131 this .columnOrder = 1073741823 ,
129- this .isFlexible = false ,
130- this .flex,
131- this .flexFit})
132+ this .rowColumn = true ,
133+ this .rowFlex,
134+ this .columnFlex,
135+ this .rowFlexFit,
136+ this .columnFlexFit})
132137 : super (key: key);
133138
134139 @override
135140 Widget build (BuildContext context) {
136- return isFlexible
137- ? Flexible (flex: flex, fit: flexFit, child: child)
138- : child;
141+ if (rowColumn && rowFlex != null ) {
142+ return Flexible (flex: rowFlex, fit: rowFlexFit, child: child);
143+ } else if (! rowColumn && columnFlex != null ) {
144+ return Flexible (flex: columnFlex, fit: columnFlexFit, child: child);
145+ }
146+
147+ return child;
139148 }
149+
150+ ResponsiveRowColumnItem copyWith ({
151+ Widget child,
152+ int rowOrder,
153+ int columnOrder,
154+ bool rowColumn,
155+ int rowFlex,
156+ int columnFlex,
157+ FlexFit rowFlexFit,
158+ FlexFit columnFlexFit,
159+ }) =>
160+ ResponsiveRowColumnItem (
161+ child: child ?? this .child,
162+ rowOrder: rowOrder ?? this .rowOrder,
163+ columnOrder: columnOrder ?? this .columnOrder,
164+ rowColumn: rowColumn ?? this .rowColumn,
165+ rowFlex: rowFlex ?? this .rowFlex,
166+ columnFlex: columnFlex ?? this .columnFlex,
167+ rowFlexFit: rowFlexFit ?? this .rowFlexFit,
168+ columnFlexFit: columnFlexFit ?? this .columnFlexFit,
169+ );
140170}
0 commit comments