loadData method
✅ OPTIMIZED: Batch mode for better performance
Implementation
void loadData(List<Map<String, dynamic>> data) {
batch(() {
// Clear existing data
for (var row in _rows) {
row.removeListener(_onRowChanged);
row.disposeAllListeners();
row.dispose();
}
_rows.clear();
// Detect columns from first item
if (data.isNotEmpty) {
var firstItem = data.first;
for (var entry in firstItem.entries) {
var columnName = entry.key;
var value = entry.value;
Type columnType = value?.runtimeType ?? dynamic;
_columns[columnName.toLowerCase()] = columnType;
}
}
// Add all rows
for (var item in data) {
final row = CyberDataRow(item);
_rows.add(row);
row.addListener(_onRowChanged);
}
});
}