텍스트 필드를 사용하는 스크린과 사용하지 않는 스크린을 구분하여 텍스트 필드로 인해 실행된 KeyBoard를 감추는 방법을 작성했다.
TextField 사용시에 KeyBoard가 올라온 후 다른 화면으로 이동했을때 KeyBoard가 계속 남아있는 현상이다.
여러가지 방법이 있지만 Listener를 사용한 방법으로 해결해 보았다.
[Listener Widget]
A widget that calls callbacks in response to common pointer events.
It listens to events that can construct gestures, such as when the pointer is pressed, moved, then released or canceled.
It does not listen to events that are exclusive to mouse, such as when the mouse enters, exits or hovers a region without pressing any buttons. For these events, use MouseRegion.
Rather than listening for raw pointer events, consider listening for higher-level gestures using GestureDetector.
위 내용을 볼드체로 바꾼 부분만 간략하게 살펴보면
1. pointer events 의 반응한다고 되어 있다.
2. MouseRegion 위젯에서 내가 어떤 '포인트'에 마우스가 반응하는지 그 마우스에 대한 반응을 Listener에서 감지한다.
3. 단 'exclusive to mouse' 마우스 전용 이벤트라고 해서 버튼을 누르지 않고 필드에 진입하거나 종료 하는 등의 이벤트는 수신 받지 않는다고 되어 있다.
4. GestureDetector를 사용하는것도 고려해볼 수 있다.
즉 가르킨 포인터를 눌렀을때 Listener가 반응하여 unfocus가 실행되면서 keyboard를 감출 수 있다는 얘기가 된다.
GestureDetector로 가장 많이 사용하고 활용된 코드들이 많이 올라와 있는걸 알고 있다.
Listener에 관한건 알지 못하고 있었기에 공식문서를 통해서 MouseRegion과 함께 새로운 방법을 찾아낸 경험이 되었다.