FlutterでTextFieldに横幅を指定する

2024年7月5日金曜日

Flutter

t f B! P L

FlutterでTextFieldウィジェットの幅を設定する方法について紹介します。TextFieldには直接幅を指定するプロパティがないため、SizedBoxを使用する方法と、親ウィジェットが幅を制限している場合の対処法について紹介します。

SizedBoxを使用してTextFieldの幅を設定する

TextFieldウィジェットには、直接幅を指定するプロパティが存在しません。そのため、幅を指定する際はSizedBoxウィジェットを使用して、TextFieldをラップします。

SizedBox(
  width: 300.0, // 幅を300ピクセルに設定
  child: TextField(
    decoration: InputDecoration(
      labelText: 'Enter your name',
      border: OutlineInputBorder(),
    ),
  ),
)

このコードでは、SizedBoxを使用してTextFieldの幅を300ピクセルに設定しています。これにより、ユーザーが入力欄のサイズを明確に認識できるようになります。

2. 親ウィジェットで横幅が指定されている場合の対処法

Containerなどの親ウィジェットで横幅が指定されている場合、SizedBoxで指定した幅が効かないことがあります。この問題を解決するために、CenterAlignウィジェットを使用して、TextFieldの位置とサイズを調整する方法が有効です。

Container(
  width: double.infinity,
  padding: EdgeInsets.all(20.0),
  child: Align(
    alignment: Alignment.center,
    child: SizedBox(
      width: 250.0, // 幅を250ピクセルに設定
      child: TextField(
        decoration: InputDecoration(
          labelText: 'Email',
          border: OutlineInputBorder(),
        ),
      ),
    ),
  ),
)

この例では、Alignウィジェットを使用してTextFieldを中央に配置し、その幅を250ピクセルに設定しています。親ウィジェットの幅が広い場合でも、この方法を使用すればTextFieldの幅を正確に制御できます。

まとめ

FlutterでTextFieldの幅を設定する際は、SizedBoxを使うのが基本ですが、親ウィジェットの制約により影響を受けることがあるため、その場合はSizedBoxの上位にCenterAlignを設定します。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ