7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Flutter備忘録】DataTableを親Widgetに収まるように配置する

Last updated at Posted at 2020-08-16

はじめに

Flutterを利用したアプリ開発をやっている中で
個人的に詰まった部分を定期的に記事にしていこうと思います。

DataTableとは

  • FlutterWidgetの一つでデータをいい感じに複数に分割してくれるもの

↓こんな感じのやつ

どこで詰まったか

公式のものや、記事にあるものをいくつか試したが、
↓のように余白が空いてしまったり、画面に収まらなかったりした。

試したが意味のなかったもの(自分には使えなかったもの)

  • ConstrainedBoxを使って横幅を固定した→Datatableの一つの要素にしか適用されなかった
  • ContainerDataTableを囲ってwidthを固定→同上

(他にも色々試したが自分にはよくわからなかった....)

解決策

以下のようにSingleChildScrollViewの子要素としてFittedBoxを設定し、
その子要素にDataTableを入れることで画面内にデータが均等に収まった。

FittedBoxとは

Widgetが親のサイズに収まりきらない時に子Widgetが収まるようにしてくれるもの

SingleChildScrollViewとは

Widgetが端末の縦サイズを超えたらスクロールしてくれるもの

data.dart
 SingleChildScrollView(
   scrollDirection: Axis.vertical,
   child: FittedBox(child: data(documents)));
datatable_widget.dart
 Widget recordData(documents) => DataTable(
          columns: const <DataColumn>[
            DataColumn(
              label: Text(
                "hoge",
                style: TextStyle(fontStyle: FontStyle.italic),
              ),
            ),
         ],
          rows: documents
              .map<DataRow>((document) => DataRow(cells: <DataCell>[
                    DataCell(Text(document["hogeData"]),
                        showEditIcon: false, placeholder: false), 
                  ]))
              .toList());

最後に

とりあえず親おさまらない時はFittedBoxを使えばいいことを今回は認識した。
今回が初投稿かつFlutter初学者なので使い方や説明について間違っていたらすみません。
(その時はコメントの程よろしくお願いします)

参考文献

(↓とても参考になりました!)
Flutter DataTable remove extra padding
SingleChildScrollView
FittedBoxについて

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?