TTableHeader<T, K>.column constructor

TTableHeader<T, K>.column(
  1. String text,
  2. List<Widget> builder(
    1. T
    ), {
  3. int? flex,
  4. double? minWidth,
  5. double? maxWidth,
  6. Alignment? alignment,
  7. CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.start,
  8. MainAxisAlignment mainAxisAlignment = MainAxisAlignment.center,
  9. double spacing = 4.0,
  10. String? key,
  11. TFilterType? filterType,
  12. bool filterable = false,
  13. List<TFilterOperator>? filterOperators,
  14. List? filterItems,
  15. TFilterDef<T>? filterDef,
  16. double widthEstimator(
    1. T data
    )?,
  17. bool flattenOnMobile = false,
  18. String mobileKeyPrefixBuilder(
    1. String headerText,
    2. String childKey
    )?,
  19. List<TKeyValue> keyValuesBuilder(
    1. T data
    )?,
})

Creates a header for displaying multiple widgets vertically in a column in table cells.

Implementation

TTableHeader.column(
  this.text,
  List<Widget> Function(T) builder, {
  this.flex,
  this.minWidth,
  this.maxWidth,
  this.alignment,
  CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.start,
  MainAxisAlignment mainAxisAlignment = MainAxisAlignment.center,
  double spacing = 4.0,
  this.key,
  this.filterType,
  this.filterable = false,
  this.filterOperators,
  this.filterItems,
  this.filterDef,
  this.widthEstimator,
  this.flattenOnMobile = false,
  this.mobileKeyPrefixBuilder,
  this.keyValuesBuilder,
})  : map = null,
      builder = ((ctx, item, __) {
        final isDense = TTableScope.maybeOf(ctx)?.dense ?? false;
        final widgets = builder(item.data);
        if (widgets.isEmpty) return const SizedBox.shrink();

        final effectiveSpacing = isDense ? spacing * 0.75 : spacing;
        return Column(
          mainAxisSize: MainAxisSize.min,
          mainAxisAlignment: mainAxisAlignment,
          crossAxisAlignment: crossAxisAlignment,
          children: [
            for (int i = 0; i < widgets.length; i++) ...[
              if (i > 0) SizedBox(height: effectiveSpacing),
              widgets[i],
            ],
          ],
        );
      });