[Flutter]DataTableにDataRowを追加するには?

Flutter

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

DataTableにDataRowを追加する方法を紹介します。

スポンサーリンク

方法

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

DataTableにDataRowを追加するには、リストの変数を使います。

まず、DataTableで表示するDataRowをリストにします。

var _list = <DataRow>[
    DataRow(),
    DataRow(),
    DataRow(),
    ・・・
]

次に、このリストをDataTableの引数「rows」に指定します。

DataTable(
  columns: [
    ・・・
  ],
  rows: _list,
),

最後に、DataRowを追加したい場合に、リストにDataRowを追加します。

_list.add(
  DataRow(cells: [
    ・・・
  ]),
);

これでDataTableにDataRowを追加することが出来ます。

使用例

以下は、使用例です。

class Home extends StatefulWidget {
  const Home({Key? key}) : super(key: key);

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  List<DataRow> _list = List.generate(
    5,
    (index) {
      return DataRow(
        cells: [
          DataCell(Text('$index')),
          DataCell(Text('Prodauct $index')),
          DataCell(Text('${Random().nextInt(200) + 1}円')),
        ],
      );
    },
  );

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        body: Column(
          children: [
            DataTable(
              columns: [
                DataColumn(
                  label: Text('ID'),
                ),
                DataColumn(
                  label: Text('名前'),
                ),
                DataColumn(
                  label: Text('値段'),
                ),
              ],
              rows: _list,
            ),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  _list.add(
                    DataRow(cells: [
                      DataCell(Text('${_list.length}')),
                      DataCell(Text('Prodauct ${_list.length}')),
                      DataCell(Text('${Random().nextInt(200) + 1}円')),
                    ]),
                  );
                });
              },
              child: Text('Add'),
            ),
          ],
        ),
      ),
    );
  }
}

コメント

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