loadDataFromRows method

void loadDataFromRows(
  1. List<CyberDataRow> rows, {
  2. bool copy = true,
})

✅ OPTIMIZED: Batch mode + zero-copy option

Implementation

void loadDataFromRows(List<CyberDataRow> rows, {bool copy = true}) {
  batch(() {
    // Clear existing data
    for (var row in _rows) {
      row.removeListener(_onRowChanged);
      row.disposeAllListeners();
      row.dispose();
    }
    _rows.clear();

    // Detect columns from first row
    if (rows.isNotEmpty) {
      _columns.clear();
      var firstRow = rows.first;
      for (var fieldName in firstRow.fieldNames) {
        var value = firstRow[fieldName];
        Type columnType = value?.runtimeType ?? dynamic;
        _columns[fieldName.toLowerCase()] = columnType;
      }
    }

    // Add rows (copy or transfer)
    for (var row in rows) {
      final targetRow = copy ? row.copy() : row;
      _rows.add(targetRow);
      targetRow.addListener(_onRowChanged);
    }
  });
}