[Flutter]DataTableの選択されているDataRowの背景色を設定するには?

Flutter

どうも、ちょげ(@chogetarou)です。

DataTableのチェックボックスで選択されているDataRowの背景色を設定する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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(),
        ),
      ),
    );
  }

コメント

タイトルとURLをコピーしました