はじめに
Flutter
を利用したアプリ開発をやっている中で
個人的に詰まった部分を定期的に記事にしていこうと思います。
DataTableとは
-
Flutter
のWidget
の一つでデータをいい感じに複数に分割してくれるもの
↓こんな感じのやつ
どこで詰まったか
公式のものや、記事にあるものをいくつか試したが、
↓のように余白が空いてしまったり、画面に収まらなかったりした。
試したが意味のなかったもの(自分には使えなかったもの)
-
ConstrainedBox
を使って横幅を固定した→Datatable
の一つの要素にしか適用されなかった -
Container
でDataTable
を囲ってwidth
を固定→同上
(他にも色々試したが自分にはよくわからなかった....)
解決策
以下のようにSingleChildScrollView
の子要素としてFittedBox
を設定し、
その子要素にDataTable
を入れることで画面内にデータが均等に収まった。
FittedBox
とは
Widgetが親のサイズに収まりきらない時に子Widgetが収まるようにしてくれるもの
SingleChildScrollView
とは
Widgetが端末の縦サイズを超えたらスクロールしてくれるもの
SingleChildScrollView(
scrollDirection: Axis.vertical,
child: FittedBox(child: data(documents)));
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について