반응형
질문
현재, 위젯의 onTap
메소드를 사용하여 소프트 키보드를 숨기는 방법을 알고 있습니다.
FocusScope.of(context).requestFocus(new FocusNode());
하지만 텍스트 필드 외부를 클릭하거나 화면 어디에서든 소프트 키보드를 숨기고 싶습니다. flutter
에서 이를 수행하는 방법이 있나요?
답변
잘못된 방식으로 하고 있습니다. 소프트 키보드를 숨기는 간단한 방법을 시도해보세요. 전체 화면을 GestureDetector
메서드로 래핑하고 onTap
메서드에 이 코드를 작성하면 됩니다.
FocusScope.of(context).requestFocus(new FocusNode());
전체 예제는 다음과 같습니다:
new Scaffold(
body: new GestureDetector(
onTap: () {
FocusScope.of(context).requestFocus(new FocusNode());
},
child: new Container(
//여기에 코드를 작성하세요
),
),
)
업데이트 (2021년 5월)
return GestureDetector(
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
child: Scaffold(
appBar: AppBar(
title: Text('Login'),
),
body: Body(),
),
);
이렇게 하면 AppBar를 터치해도 작동합니다. new
는 Dart 2에서 선택 사항입니다. FocusManager.instance.primaryFocus
는 위젯 트리에서 현재 주요 포커스를 가진 노드를 반환합니다.
반응형
댓글