FlutstrapGrid.cards constructor
FlutstrapGrid.cards({
- required List<
Widget> cards, - int columns = 3,
- double gap = FSSpacing.md,
- bool fluid = false,
- EdgeInsetsGeometry? padding,
- EdgeInsetsGeometry? margin,
- bool equalHeight = true,
✅ FIXED: Create a card grid layout
Implementation
factory FlutstrapGrid.cards({
required List<Widget> cards,
int columns = 3,
double gap = FSSpacing.md,
bool fluid = false,
EdgeInsetsGeometry? padding,
EdgeInsetsGeometry? margin,
bool equalHeight = true,
}) {
assert(cards.isNotEmpty, 'Cards list cannot be empty');
assert(columns >= 1, 'Columns must be at least 1');
return FlutstrapGrid(
children: [
LayoutBuilder(
builder: (context, constraints) {
// Distribute cards into rows
final rows = FSGridUtils.distributeItems(cards, columns);
return Column(
children: rows.asMap().entries.map((entry) {
final rowIndex = entry.key;
final rowCards = entry.value;
return Padding(
padding: rowIndex > 0
? EdgeInsets.only(top: gap)
: EdgeInsets.zero,
child: FlutstrapRow(
children: rowCards.map((card) {
final wrappedCard = equalHeight
? SizedBox(
width: double.infinity,
child: card,
)
: card;
return Expanded(
flex: 12 ~/ columns,
child: wrappedCard,
);
}).toList(),
gap: gap,
),
);
}).toList(),
);
},
),
],
fluid: fluid,
padding: padding,
margin: margin,
);
}