広告

Flutterラボの

プレミアム会員になる

【Flutter】PaddingウィジェットとContainerのpaddingプロパティの違い(なぜMarginウィジェットが存在しないのか)

2021.11.27

Containerにはpaddingを設定することができますが、Paddingウィジェットも存在するので、どのような違いがあるのか説明したいと思います。

この記事を読んだ方がUI開発する際にどちらを使うべきか判断できるようになるお手伝いになれば嬉しいです。

Flutterラボ|動画で学ぶFlutter学習サイト Flutter・Dart・Firebaseに関するアプリ制作の技術を学ぶことができます。プログラミング初心者から経験者まで flutterlabo.tech

例として、黄色のContainerの中に文字がある状態を想定します。

Scaffold(
  appBar: AppBar(
    centerTitle: true,
    title: const Text('Flutterラボ'),
  ),
  body: Container(
    decoration: BoxDecoration(
      color: Colors.yellow,
      border: Border.all(width: 1)
    ),
    width: 300,
    height: 100,
    child: const Text('Flutterラボ', style: TextStyle(fontSize: 25),)
  ),
);

Container内のpaddingを設定すると、文字の周り、つまりContainerのchildの周りに余白ができることになります。

Container(
  padding: const EdgeInsets.all(20),
  decoration: BoxDecoration(
    color: Colors.yellow,
    border: Border.all(width: 1)
  ),
  width: 300,
  height: 100,
  child: const Text('Flutterラボ', style: TextStyle(fontSize: 25),)
),

それと比べて、このContainerをPaddingで囲う場合と、Container内のpaddingを設定する場合の比較を行います。

まず、Paddingで囲うとContainerの周りに余白ができます。

Padding(
  padding: const EdgeInsets.all(20.0),
  child: Container(
    decoration: BoxDecoration(
      color: Colors.yellow,
      border: Border.all(width: 1)
    ),
    width: 300,
    height: 100,
    child: const Text('Flutterラボ', style: TextStyle(fontSize: 25),)
  ),
),

これは、Containerのpaddingとmarginの違いの記事で説明したmarginと同じ見え方です。

つまり、paddingというものはWidgetの描画領域とchildの間の余白のことを指していて、2つを比較すると以下にようになります。

  • Container内のpadding:内側の余白

  • Paddingで囲う:外側の余白 → Container内のmarginと言い換えられる

こう考えると、もともとHTMLやCSSの知識がある方がFlutterをはじめたとき多くの人が考える、PaddingウィジェットがあるのになぜMarginウィジェットが無いのかという疑問の答えも明白で、PaddingとMarginが両方あったとしても内容が重複しているので片方が必要なくなってしまうから無いということが分かります。

Flutterラボ 現役エンジニアが教えるFlutter学習! プログラミング初心者でもiOS・Android・WEBアプリ開発を学ぶことがで www.youtube.com


Flutterラボ
hatchoutschool
FlutterとNuxtに関する知識を発信しています! 動画で学べる学習サイト『Flutterラボ』と『Nuxtラボ』を運営 Flutterラボ:https://flutterlabo.tech/ 広告のECサイトを開発(https://ec-ad.tech/)