List<Map> data = [], selected = [];
@override
void initState() {
super.initState();
data.add({'id': 'Emp1', 'name': 'Naveen', 'salary': 50000});
data.add({'id': 'Emp3', 'name': 'Satish', 'salary': 35000});
data.add({'id': 'Emp2', 'name': 'Ram', 'salary': 40000});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
padding: EdgeInsets.all(15),
alignment: Alignment.center,
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(
selected.length < 1
? 'Nothing Selected !'
: 'First cell : ${selected[0].values.toList()[0]}',
textAlign: TextAlign.center),
DataTable(
columns: data.first.keys
.map((dynamic keys) =>
DataColumn(label: Text(keys.toString())))
.toList(),
rows: data.map((map) {
return DataRow(
selected: selected.contains(map),
onSelectChanged: (boo) {
if (boo) {
setState(() {
selected.add(map);
});
} else {
setState(() {
selected.remove(map);
});
}
},
cells: map.values.map((value) {
return DataCell(Text(value.toString()));
}).toList());
}).toList()),
],
),
));
}
![pic](https://i.stack.imgur.com/2aPrr.jpg)