🖋️

FlutterのDataTableのデフォルトで表示される横線を消す

2022/11/01に公開

この物語はFlutterのDataTable内部の横線を消すひとりのエンジニアの記録である。

デフォルトではこのように横線が表示される。
この横線を消して文字だけ表示したい。

この記事は Flutter 3.3.3 の結果を元に執筆してある。

結論

dividerの色を変える。

Theme(
  data: Theme.of(context).copyWith(
    dividerColor: Color.fromARGB(0, 0, 0, 0),
  ),
  child: DataTable(
    //装飾系のないシンプルなDataTable実装
  ),
)

しくみ

DataTableの横線が付く仕組みには2通りある。

  • Border
  • Divider

Border

DataTableには border というものがあって、外側や内側の線を指定できる。

DataTable(
  border: TableBorder(
    horizontalInside: BorderSide( //内側の横線
      width: 2,
      color: Color.fromARGB(255, 255, 0, 0),
    ),
  ),

DataTableの border を指定しない場合、border機能による線は付かない。
今回は線を付けたくないので border を指定しない。

DataTable(
  //border: コメントアウトで指定しないことを表している

Divider

border を指定しない場合でもdivider機能によって内部の横線がつく。
この線をコントロールするにはDataTableの dividerThickness というものを使う。これは太さを調整する機能がある。

DataTable(
  dividerThickness: 2.0,

デフォルト(指定しない場合)では1.0のようである。

しかしここに0.0を指定してもなぜか線が消えない。うっすら表示される。

DataTable(
  dividerThickness: 0.0, //なぜか線が消えない

今のバージョンでは線が消えないが、今後のアップデートにより、ここを0にすることで線が消えるようになったのなら、この対応で十分である。

結論

dividerの太さを0にしても線が消えないので、Themeによってdividerの色を透明(or背景と一緒)にする。

Theme(
  data: Theme.of(context).copyWith(
    dividerColor: Color.fromARGB(0, 0, 0, 0),
  ),
  child: DataTable(
    //装飾系のないシンプルなDataTable実装
  ),
)

線が消えた。

Discussion