FlutstrapGrid.cards constructor

FlutstrapGrid.cards({
  1. required List<Widget> cards,
  2. int columns = 3,
  3. double gap = FSSpacing.md,
  4. bool fluid = false,
  5. EdgeInsetsGeometry? padding,
  6. EdgeInsetsGeometry? margin,
  7. 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,
  );
}