resizedTableColumns function

Map<String, double> resizedTableColumns(
  1. List<TableColumn> columns,
  2. List<double> widths,
  3. Map<String, double> overrides,
  4. int boundary,
  5. double delta,
)

Implementation

Map<String, double> resizedTableColumns(
  List<TableColumn> columns,
  List<double> widths,
  Map<String, double> overrides,
  int boundary,
  double delta,
) {
  final resized = [...widths];
  if (delta > 0) {
    var rest = delta;
    for (var index = boundary + 1; index < columns.length; index++) {
      if (rest <= 0) {
        break;
      }
      if (!columns[index].resizable) {
        continue;
      }
      final taken = rest.clamp(
        0.0,
        (resized[index] - tableColumnMinWidth).clamp(0.0, double.infinity),
      );
      resized[index] -= taken;
      rest -= taken;
    }
    resized[boundary] += delta - rest;
  } else {
    final given = (-delta).clamp(
      0.0,
      (resized[boundary] - tableColumnMinWidth).clamp(0.0, double.infinity),
    );
    resized[boundary] -= given;
    resized[boundary + 1] += given;
  }
  return {
    ...overrides,
    for (final (index, column) in columns.indexed)
      if (resized[index] != widths[index]) column.id: resized[index],
  };
}