Skip to content

Commit 6bcb983

Browse files
committed
Responsive Row Column Creation #3
*Create Responsive Row Column Item for item ordering and fit.
1 parent 23fcc48 commit 6bcb983

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

lib/responsive_row_column.dart

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:flutter/cupertino.dart';
22
import 'package:flutter/widgets.dart';
33

44
class ResponsiveRowColumn extends StatelessWidget {
5-
final List<Widget> children;
5+
final List<ResponsiveRowColumnItem> children;
66
final isRow;
77
final isColumn;
88
final MainAxisAlignment rowMainAxisAlignment;
@@ -71,7 +71,7 @@ class ResponsiveRowColumn extends StatelessWidget {
7171
verticalDirection: rowVerticalDirection,
7272
textBaseline: rowTextBaseline,
7373
children: [
74-
...buildChildren(children, rowSpacing),
74+
...buildChildren(children, rowColumn, rowSpacing),
7575
],
7676
),
7777
)
@@ -85,31 +85,48 @@ class ResponsiveRowColumn extends StatelessWidget {
8585
verticalDirection: columnVerticalDirection,
8686
textBaseline: columnTextBaseline,
8787
children: [
88-
...buildChildren(children, columnSpacing),
88+
...buildChildren(children, rowColumn, columnSpacing),
8989
],
9090
),
9191
);
9292
}
9393

94-
List<Widget> buildChildren(List<Widget> children, double spacing) {
95-
List<Widget> childrenList = [];
94+
List<ResponsiveRowColumnItem> buildChildren(
95+
List<ResponsiveRowColumnItem> children, bool rowColumn, double spacing) {
96+
List<ResponsiveRowColumnItem> childrenHolder = children;
97+
childrenHolder.sort((a, b) {
98+
if (rowColumn) {
99+
return a.rowOrder.compareTo(b.rowOrder);
100+
} else {
101+
return a.columnOrder.compareTo(b.columnOrder);
102+
}
103+
});
104+
List<Widget> widgetList = childrenHolder;
96105
for (int i = 0; i < children.length; i++) {
97-
childrenList.add(children[i]);
106+
widgetList.add(children[i]);
98107
if (spacing != null && i != children.length - 1)
99-
childrenList.add(Padding(padding: EdgeInsets.only(bottom: spacing)));
108+
widgetList.add(Padding(padding: EdgeInsets.only(bottom: spacing)));
100109
}
101-
return childrenList;
110+
return widgetList;
102111
}
103112
}
104113

105-
class ResponsiveFlexible extends StatelessWidget {
114+
class ResponsiveRowColumnItem extends StatelessWidget {
115+
final Widget child;
116+
final int rowOrder;
117+
final int columnOrder;
106118
final bool isFlexible;
107119
final int flex;
108120
final FlexFit flexFit;
109-
final Widget child;
110121

111-
const ResponsiveFlexible(
112-
{Key key, this.isFlexible = false, this.flex, this.flexFit, this.child})
122+
const ResponsiveRowColumnItem(
123+
{Key key,
124+
@required this.child,
125+
this.rowOrder,
126+
this.columnOrder,
127+
this.isFlexible = false,
128+
this.flex,
129+
this.flexFit})
113130
: super(key: key);
114131

115132
@override

0 commit comments

Comments
 (0)