Flutter:下線のないHintTextでTextFieldを作成する方法は?


116

これは私が作ろうとしているものです:

ここに画像の説明を入力してください

テキストフィールドのFlutterドキュメント(https://flutter.io/text-input/)ではnull、装飾に渡して下線を削除できると記載されています。ただし、ヒントテキストも削除されます。

テキストフィールドがフォーカスされているかどうかに関係なく、下線は必要ありません。

更新: 2020年4月のFlutter SDKの変更を反映するために承認された回答を更新しました。

回答:


78

上記の回答のいずれも、新しいフラッターSDKで機能します。Webとデスクトップのサポートを統合した後、このように個別に指定する必要があるためです。

TextFormField(
    cursorColor: Colors.black,
    keyboardType: inputType,
    decoration: new InputDecoration(
        border: InputBorder.none,
        focusedBorder: InputBorder.none,
        enabledBorder: InputBorder.none,
        errorBorder: InputBorder.none,
        disabledBorder: InputBorder.none,
        contentPadding:
            EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
        hintText: sLabel),
  )

232

このようにしてください:

TextField(
  decoration: new InputDecoration.collapsed(
    hintText: 'Username'
  ),
),

または、アイコンなどの他のものが必要な場合は、境界線を InputBorder.none

InputDecoration(
    border: InputBorder.none,
    hintText: 'Username',
  ),
),

materialパッケージをインポートせずにそれを行うことは可能ですか?つまりCupertinoテーマですか?
kosiara-Bartosz Kosarzycki

回避したい: InputDecoration' can't be assigned to the parameter type 'BoxDecoration'タイプエラー
kosiara-Bartosz Kosarzycki

13

フォーカスされた境界線をなしに変更する

TextField(
      decoration: new InputDecoration(
          border: InputBorder.none,
          focusedBorder: InputBorder.none,
          contentPadding: EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
          hintText: 'Subject'
      ),
    ),

12

以下は、より完全なコードを示す補足的な回答です。

ここに画像の説明を入力してください

  Container(
    decoration: BoxDecoration(
      color: Colors.tealAccent,
      borderRadius:  BorderRadius.circular(32),
    ),
    child: TextField(
      decoration: InputDecoration(
        hintStyle: TextStyle(fontSize: 17),
        hintText: 'Search your trips',
        suffixIcon: Icon(Icons.search),
        border: InputBorder.none,
        contentPadding: EdgeInsets.all(20),
      ),
    ),
  ),

ノート:

  • 暗い背景(コードは表示されていません)はColors.tealです。
  • InputDecorationfilledfillColorプロパティも持っていますが、コーナー半径を設定することができなかったため、代わりにコンテナを使用しました。

3

私は境界線の半径を与える他の答えは見つからなかった、あなたは単にこのようにそれを行うことができ、ネストされていません Container

  TextField(
    decoration: InputDecoration(
      border: OutlineInputBorder(
        borderSide: BorderSide.none,
        borderRadius: BorderRadius.circular(20),
      ),
    ),
  );

-1

TextFieldフラッターコントロールを使用していました。以下のメソッドを使用してユーザーが入力した入力を取得しました。

onChanged:(value){
}

-2
decoration: InputDecoration(
 border:OutLineInputBorder(
 borderSide:BorderSide.none
 bordeRadius: BordeRadius.circular(20.0)
 )
)

この回答と@Eの違いは何ですか1か月前からのSunの回答は?
Jeremy Caney

あなたは何か新しいものが欲しいですか?
SRケシャフ

2
回答が既に提供されている場合は、再度提出する必要はありません。同じように複数の回答を並べ替える必要があるため、そうすることは将来の読者にノイズを追加するだけです。将来、もう少し評判が高まったら、既存の回答に賛成することができます。これは、アプローチを検証し、ソリューションが機能することを確認するための推奨される方法です。
Jeremy Caney

1
寄稿者は、説明の方法が異なる場合や、かなり詳細を追加したい場合でも、同様のアドバイスを投稿することがあります。まったく問題ありません。ここでの問題は、あなたが同じ答えを提供しているように見えますが、詳細が少ないため、スレッドにはあまり貢献していません。
Jeremy Caney
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.