loadData method

void loadData(
  1. List<Map<String, dynamic>> data
)

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