[Flutter] 키보드활성화 이벤트 처리

Flutter에서 한줄의 코드로 소프트웨어 키보드가 올라와있는지 확인합니다

[Flutter] 키보드활성화 이벤트 처리

TextField, TextFormField 등을 다루면서 소프트웨어 키보드가 올라와있는지 알아야 하는 경우가 있습니다.

https://pub.dev 에서 찾을 수 있는 Keyboard Visibility 패키지는 네이티브 코드를 이용해서 키보드가 열리거나 닫히는 이벤트를 제어할 수 있습니다.

이 패키지를 사용하는데 몇가지 문제가 있습니다.

  1. AndroidX를 지원하지 않습니다.
  2. AndroidX를 지원하기 위한 Pull Request를 개발자가 받아주지 않습니다.
  3. FlutterFragmentActivity 를 이용하는 경우 최초에 작동하지 않습니다. (백그라운드로 갔다가 돌아와야 작동합니다.)

AndroidX를 지원하기위해 pubspec.yaml에 아래와 같이 넣어주어야 합니다.keyboard_visibility:
   git:
       url: git@github.com:rafalbednarczuk/flutter_keyboard_visibility.git
       branch: master

local_auth 패키지를 이용해 지문 인식을 하려면 FlutterFragmentActivity를 사용하게 되는데, 이 경우 3. 의 문제가 발생합니다. 해결방법은 네이티브 코드를 수정해야하는데 코드 한줄로, 위 패키지를 사용하지 않고 해결할 수 있습니다.

위젯의 build 메소드의 시작 부분에 아래 코드를 넣어주세요bool _keyboardVisible = MediaQuery.of(context).viewInsets.vertical > 0;

이제 _keyboardVisible을 이용해 키보드가 열려있는지, 닫혀있는지 알 수 있습니다.

시리즈의 전체목록을 보려면 링크를 눌러주세요

Subscribe to Half-Built Life

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe