どうも、ちょげ(@chogetarou)です。
DataTableのチェックボックスで選択されているDataRowの背景色を設定する方法を紹介します。
方法

DataTableの選択されているDataRowの背景色を設定するには、引数「dataRowColor」を使います。
まず、DataTableの引数「dataRowColor」にMaterialSateProperty.resolveWithを指定します。
そして、MaterialStatePropertyの引数の関数で選択されている時の条件分岐をし、条件下での色を戻り値として返します。
DataTable(
dataRowColor: MaterialStateProperty.resolveWith((states) {
if (states.contains(MaterialState.selected)) { //選択されている時の条件分岐
return /*選択されている時の背景色*/;
}
}),
columns: [・・・],
rows: [・・・],
),
これでDataTableの選択されているDataRowの背景色を設定することが出来ます。
使用例
以下は、使用例です。

@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: DataTable(
dataRowColor: MaterialStateProperty.resolveWith((states) {
if (states.contains(MaterialState.selected)) {
return Colors.yellow;
}
}),
columns: [
DataColumn(
label: Text('名前'),
),
DataColumn(
label: Text('値段'),
),
],
rows: _list
.map(
(e) => DataRow(
selected: e['check'],
onSelectChanged: (bool? selected) {
setState(() {
e['check'] = selected;
});
},
cells: [
DataCell(
Text('${e['name']}'),
),
DataCell(
Text('${e['price']}円'),
),
],
),
)
.toList(),
),
),
);
}
コメント