
TextFormField의 height를 원하는 높이로 조절하고 싶은데, 강제로 값을 넣으면 error Text가 TextFormField의 영역을 침범해버린다.
| before | after |
|---|---|
![]() | ![]() |
해결 방법은 몇가지 있으나
아직 제대로된 방법 대신 대안만 찾은 느낌이 크다.
높이를 조절하고 싶은 욕심을 버린다.
높이를 강제하지 않으면 플러터가 알아서 해준다.
| before | after |
|---|---|
![]() | ![]() |
높이가 자동으로 바뀌며, error text가 기존 위젯의 영역을 침범하지 않고 추가된다.
참고로 TextField 기본 height 는 51 이며, isDense: true 일 경우 43이다.
(chrome 환경에서)
높이를 강제하며, errorText가 발생할 때 높이를 변경해준다.
SizedBox로 TextFormField를 Wrap하거나, TextFormField의 decoration 안에 constraints를 사용하여, error 상태가 아닐 때는 높이 40, error 상태면 거기에 errorText 높이인 22를 더해줬다.
| before | after |
|---|---|
![]() | ![]() |
이 방법으로 원하는 높이로 조정할 수 있고 마찬가지로 error 발생시의 높이도 조절할 수 있다.
처음부터 ErrorText 가 있을 떄의 높이로 설정하고, decoration 안에 helperText=" " 로 공간을 미리 할당해 둔다.
| before | after |
|---|---|
![]() | ![]() |
이러면 errorText가 생겼을 때 ui의 움직임이 없기 때문에 위화감이 없으며, 코드가 깔끔하여 기분도 좋다.
이는 StackOverflow 에서 찾다가 알게된 방법이며, 사실상 이 방법이 가장 마음에 든다.
(출처 : https://stackoverflow.com/questions/56674596/validator-error-message-changes-textformfields-height)
저는 해결 3 방법으로 다 바꾸러 갑니다.
글 잘 봤습니다.