[Flutter]DataTableのDataRowにタップ処理をついするには?

Flutter

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

DataTableのDataRowにタップ処理を追加する方法を紹介します。

スポンサーリンク

方法

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

DataTableのDataRowにタップ処理を追加するには、引数「onSelectedChanged」を使います。

まず、DataRowの引数「onSelectedChanged」に、引数を1つ持つコールバック関数を指定します。

そして、コールバック関数内に、タップ処理を記述します。

DataTable(
  columns: [・・・],
  rows: [
    DataRow(
      onSelectChanged: (value) {
        //タップ処理
      },
      cells: [・・・],
    ),
    ・・・
  ],
),

DataRowの引数「onSelectedChanged」に指定したコールバック関数が、DataTableのDataRowをタップした際に呼び出されます。

DataRowの引数「onSelectedChanged」にコールバック関数を指定すると、DataTableにチェックボックスが表示されます。

もし、チェックボックスを非表示にする場合は、DataTableの引数「showCheckBoxColumn」にfalseを指定します。

DataTable(
  showCheckboxColumn: false,
  columns: [・・・],
  rows: [
    DataRow(
      onSelectChanged: (value) {
        //タップ処理
      },
      cells: [・・・],
    ),
    ・・・
  ],
),

使用例

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        body: Center(
          child: DataTable(
            showCheckboxColumn: false,
            columns: [
              DataColumn(
                label: Text('名前'),
              ),
              DataColumn(
                label: Text('年齢'),
              ),
              DataColumn(
                label: Text('性別'),
              ),
            ],
            rows: [
              DataRow(
                onSelectChanged: (value) {
                  print("Tap Taro!");
                },
                cells: [
                  DataCell(Text('太郎')),
                  DataCell(Text('19')),
                  DataCell(Text('男')),
                ],
              ),
              DataRow(
                onSelectChanged: (value) {
                  print("Tap Sayuri!");
                },
                cells: [
                  DataCell(Text('さゆり')),
                  DataCell(Text('24')),
                  DataCell(Text('女')),
                ],
              ),
              DataRow(
                onSelectChanged: (value) {
                  print("Tap Goro!");
                },
                cells: [
                  DataCell(Text('吾郎')),
                  DataCell(Text('34')),
                  DataCell(Text('男')),
                ],
              ),
            ],
          ),
        ),
      ),
    );
  }

コメント

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