두 개의 TextField가 있고, TextField 안에는 suffixIcon이 들어있다.
해당 아이콘은 TextField의 내용을 한 번에 지우기 위한 버튼으로 사용하려 한다.
textInputAction: TextInputAction.next,
그리고 편의성을 위해 textInputAction에 next 메서드를 주어 키보드의 버튼을 클릭하면 다음 TextField로 포커스를 이동시키고 싶었다.
하지만 키보드의 버튼을 누르면 의도대로 다음 TextField로 포커스가 이동하지 않고, 현재 TextField의 suffixIcon으로 포커스가 이동한다.
이때, Focus 위젯을 사용하여 포커스가 가지 않도록 할 수 있다.
TextField(
textInputAction: TextInputAction.next,
decoration: InputDecoration(
filled: true,
fillColor: Colors.white,
hintText: "아이디를 입력하세요",
suffixIcon: Focus(
descendantsAreFocusable: false,
child: IconButton(
onPressed: () {},
icon: Icon(
Icons.clear,
),
),
),
),
),
suffixIcon의 포커스를 없앨 것이기 때문에 IconButton을 Focus 위젯으로 감싸주고
descendantsAreFocusable: false,
descendantsAreFocusable 속성에 false를 할당해준다.
번역기를 돌려보니 대략 '자손이 초점을 맞출 수 있는가'로 자식 위젯이 focus를 가질 수 없도록 설정해 주는 것이다.
이제 의도대로 작동한다!
'FLUTTER' 카테고리의 다른 글
[FLUTTER] 위젯의 사이즈 구하기 (0) | 2025.02.17 |
---|---|
[FLUTTER] 스크롤 시 이미지 크기 상호작용하는 UI 만들기 (0) | 2025.01.28 |
[FLUTTER] showModalBottomSheet 자식 위젯으로 인해 드래그로 닫을 수 없을 때 해결법 (0) | 2023.06.23 |
[FLUTTER] Widget - Container (0) | 2022.09.11 |