loadDataFromRows method
✅ 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);
}
});
}