tileWidgets function
List<Widget>
tileWidgets({
- required BuildContext context,
- required TileDimensions tileDimensions,
- required int widgetCount,
- required Widget builder(
- BuildContext context,
- int index
- Widget? leadingSubHeader,
- Widget? subHeader,
- Widget? leadingWidget,
Implementation
List<Widget> tileWidgets({
required BuildContext context,
required TileDimensions tileDimensions,
required int widgetCount,
required Widget Function(BuildContext context, int index) builder,
Widget? leadingSubHeader,
Widget? subHeader,
Widget? leadingWidget
}) {
List<Widget> widgets = <Widget>[];
if (leadingSubHeader != null) widgets.add(leadingSubHeader);
if (leadingWidget != null) widgets.add(leadingWidget);
if (subHeader != null) widgets.add(subHeader);
int rowIndex = 0;
List<Widget> rowChildren = <Widget>[];
for (int index = 0; index < widgetCount; index++) {
rowChildren.add(
builder(context, index),
);
rowIndex++;
if (rowIndex > tileDimensions.elementsPerRow - 1) {
widgets.add(
new Container(
height: tileDimensions.height + tileDimensions.padding,
margin: EdgeInsets.only(left: tileDimensions.padding, right: tileDimensions.padding),
alignment: Alignment.topCenter,
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: rowChildren,
),
),
);
rowIndex = 0;
rowChildren = <Widget>[];
}
}
if (widgetCount % tileDimensions.elementsPerRow != 0) {
rowChildren = <Widget>[];
for (int index = widgetCount - (widgetCount % tileDimensions.elementsPerRow); index < widgetCount; index++) {
rowChildren.add(
builder(context, index),
);
}
for (int index = 0; index < tileDimensions.elementsPerRow - (widgetCount % tileDimensions.elementsPerRow); index++) {
rowChildren.add(
Container(
height: tileDimensions.height,
width: tileDimensions.width,
),
);
}
widgets.add(
new Container(
height: tileDimensions.height + tileDimensions.padding,
margin: EdgeInsets.only(left: tileDimensions.padding, right: tileDimensions.padding),
alignment: Alignment.topCenter,
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: rowChildren,
),
),
);
}
return widgets;
}