Drive / observe the grid externally. When null the widget builds and owns a controller from columns + rows.
final ReadableTableController<T>? controller;