Flutter : HintText가 있지만 밑줄이없는 TextField를 만드는 방법은 무엇입니까?


116

이것이 내가 만들려고하는 것입니다.

여기에 이미지 설명 입력

텍스트 필드에 대한 Flutter 문서 ( https://flutter.io/text-input/ ) null에서 장식 으로 전달하여 밑줄을 제거 할 수 있다고 말합니다 . 그러나 그것은 또한 힌트 텍스트를 제거합니다.

텍스트 필드의 포커스 여부에 관계없이 밑줄을 원하지 않습니다.

업데이트 : 2020 년 4 월 현재 Flutter SDK의 변경 사항을 반영하기 위해 수락 된 답변이 업데이트되었습니다.

답변:


79

웹 및 데스크톱 지원을 통합 한 후에는 이와 같이 개별적으로 지정해야하기 때문에 위의 답변이 아닌 것은 새로운 flutter sdk에서 작동합니다.

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 - 바르 토스 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입니다.
  • InputDecoration또한 filledfillColor속성이 있지만 모서리 반경을 가질 수 없으므로 대신 컨테이너를 사용했습니다.

3

나는 다른 대답이 테두리 반경을 제공하지 않는다는 것을 알았습니다. 이렇게 간단하게 할 수 있습니다. Container

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

-1

나는 TextFieldflutter 컨트롤 을 사용하고 있었는데 아래 방법을 사용하여 사용자가 입력 한 입력을 받았습니다.

onChanged:(value){
}

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

이 답변과 @E 의 차이점은 무엇입니까? 한 달 전 썬의 대답 ?
Jeremy Caney

새로운 것을 원하십니까?
SR Keshav

2
이미 답변을 제공 한 경우 다시 제출할 필요가 없습니다. 이렇게하면 여러 유사한 답변을 정렬해야하므로 미래의 독자에게 소음 만 추가됩니다. 앞으로 약간 더 많은 평판을 얻으면 기존 답변에 찬성 투표를 할 수 있습니다. 이것이 접근 방식을 검증하고 솔루션이 작동하는지 확인하는 데 선호되는 방법입니다.
Jeremy Caney

1
때로는 기여자들이 설명하는 방법이 다르거 나 훨씬 더 자세한 내용을 추가하려는 경우 에도 유사한 조언을 게시 할 수 있다는 점에 유의해야합니다 . 괜찮아요. 여기서 문제는 동일한 답변을 제공하는 것처럼 보이지만 세부 사항 이 적기 때문에 스레드에 많이 기여하지 않는다는 것입니다.
Jeremy Caney
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.