FlutstrapGrid.autoFit constructor

FlutstrapGrid.autoFit({
  1. required List<Widget> children,
  2. required double minColumnWidth,
  3. double gap = FSSpacing.md,
  4. bool fluid = false,
  5. EdgeInsetsGeometry? padding,
  6. EdgeInsetsGeometry? margin,
})

Create an auto-fit grid that adjusts columns based on available width

Implementation

factory FlutstrapGrid.autoFit({
  required List<Widget> children,
  required double minColumnWidth,
  double gap = FSSpacing.md,
  bool fluid = false,
  EdgeInsetsGeometry? padding,
  EdgeInsetsGeometry? margin,
}) {
  assert(children.isNotEmpty, 'Children list cannot be empty');
  assert(minColumnWidth > 0, 'Min column width must be positive');

  return FlutstrapGrid(
    children: [
      LayoutBuilder(
        builder: (context, constraints) {
          final containerWidth = constraints.maxWidth;
          final columns = FSGridUtils.calculateOptimalColumns(
            containerWidth,
            minColumnWidth,
            gap,
          );

          final rows = FSGridUtils.distributeItems(children, columns);

          return Column(
            children: rows.map((rowItems) {
              return FlutstrapRow(
                children: rowItems.map((item) {
                  return Expanded(
                    child: item,
                  );
                }).toList(),
                gap: gap,
              );
            }).toList(),
          );
        },
      ),
    ],
    fluid: fluid,
    padding: padding,
    margin: margin,
  );
}