RenderTable constructor Null safety

RenderTable(
  1. {int? columns,
  2. int? rows,
  3. Map<int, TableColumnWidth>? columnWidths,
  4. TableColumnWidth defaultColumnWidth = const FlexColumnWidth(),
  5. required TextDirection textDirection,
  6. TableBorder? border,
  7. List<Decoration?>? rowDecorations,
  8. ImageConfiguration configuration = ImageConfiguration.empty,
  9. TableCellVerticalAlignment defaultVerticalAlignment = TableCellVerticalAlignment.top,
  10. TextBaseline? textBaseline,
  11. List<List<RenderBox>>? children}
)

Creates a table render object.

  • columns must either be null or non-negative. If columns is null, the number of columns will be inferred from length of the first sublist of children.
  • rows must either be null or non-negative. If rows is null, the number of rows will be inferred from the children. If rows is not null, then children must be null.
  • children must either be null or contain lists of all the same length. if children is not null, then rows must be null.
  • columnWidths may be null, in which case it defaults to an empty map.
  • defaultColumnWidth must not be null.
  • configuration must not be null (but has a default value).

Implementation

RenderTable({
  int? columns,
  int? rows,
  Map<int, TableColumnWidth>? columnWidths,
  TableColumnWidth defaultColumnWidth = const FlexColumnWidth(),
  required TextDirection textDirection,
  TableBorder? border,
  List<Decoration?>? rowDecorations,
  ImageConfiguration configuration = ImageConfiguration.empty,
  TableCellVerticalAlignment defaultVerticalAlignment = TableCellVerticalAlignment.top,
  TextBaseline? textBaseline,
  List<List<RenderBox>>? children,
}) : assert(columns == null || columns >= 0),
     assert(rows == null || rows >= 0),
     assert(rows == null || children == null),
     assert(defaultColumnWidth != null),
     assert(textDirection != null),
     assert(configuration != null),
     _textDirection = textDirection,
     _columns = columns ?? (children != null && children.isNotEmpty ? children.first.length : 0),
     _rows = rows ?? 0,
     _columnWidths = columnWidths ?? HashMap<int, TableColumnWidth>(),
     _defaultColumnWidth = defaultColumnWidth,
     _border = border,
     _textBaseline = textBaseline,
     _defaultVerticalAlignment = defaultVerticalAlignment,
     _configuration = configuration {
  _children = <RenderBox?>[]..length = _columns * _rows;
  this.rowDecorations = rowDecorations; // must use setter to initialize box painters array
  children?.forEach(addRow);
}