키보드 show/hide 감지하기

2018. 11. 25. 13:38·개발/Flutter

아래 라이브러리를 사용하시면 됩니다.

https://pub.dev/packages/flutter_keyboard_visibility

 

flutter_keyboard_visibility | Flutter Package

Flutter plugin for discovering the state of the soft-keyboard visibility on Android and iOS.

pub.dev


 

이전 내용

키보드 감지는 SatelessWidget에서는 불가능하고 StatefulWidget에 WidgetsBindingObserver를 추가해서 이벤트를 감지할 수 있습니다.

 

추가적으로 textfield에 focusNode를 추가하여 textfield에 focus가 있는지 여부도 같이 확인합니다.

class CommentContainerState extends State     with WidgetsBindingObserver {    final FocusNode focusNode = new FocusNode();    @override   void initState() {     super.initState();     WidgetsBinding.instance.addObserver(this);     focusNode.addListener(focus);   }     @override   void dispose() {     WidgetsBinding.instance.removeObserver(this);     focusNode.removeListener(focus);     focusNode?.dispose();     super.dispose();   }    @override   Widget build(BuildContext context) {     return new Container(child: TextField(                           focusNode: focusNode,                           /* 필요없는 부분 삭제*/                         ));   }    @override   void didChangeMetrics() {     if (!mounted) return;      if (         focusNode.hasFocus &&         MediaQuery.of(context).viewInsets.bottom > 0.0 &&) {      /// 키보드가 내려가는 경우             }     else {      /// 키보드가 올라온 경우      }   } }

didChangeMetrics 함수는 크기가 변경될 때 호출되는 함수입니다. 아마 화면이 회전되는 경우에도 이벤트가 발생할 수 있으니 몇가지 변수를 추가해서 정확하게 체크해야 합니다.

 

현재 화면에서 키보드만 내리고 싶을 때는 아래와 같이 새로운 focusNode를 생성하여 그쪽에 포커스를 넘겨주면 됩니다.

FocusScope.of(context).requestFocus(new FocusNode());

 

저작자표시 비영리 변경금지 (새창열림)

'개발 > Flutter' 카테고리의 다른 글

xcode 14 베타 사용시 Invalid Bundle로 배포 안되는 버그 수정  (0) 2022.09.05
캐러셀 리스트뷰 만들기  (0) 2018.12.21
배경이 투명한 페이지 만들기  (0) 2018.12.06
링크 모음  (0) 2018.11.25
상태바, 내비게이션 바 보이기/감추기  (0) 2018.11.25
상태바 투명하게 만들기  (0) 2018.11.25
'개발/Flutter' 카테고리의 다른 글
  • 배경이 투명한 페이지 만들기
  • 링크 모음
  • 상태바, 내비게이션 바 보이기/감추기
  • 상태바 투명하게 만들기
까망고양이
까망고양이
월 300k를 달리지만 빨리는 못달리는 아저씨의 블로그
  • 까망고양이
    본격 러닝 블로그
    까망고양이
    • 분류 전체보기 (422)
      • 러닝 (259)
        • 대회 (6)
        • 기록 (244)
        • 기어 (6)
      • 일상 (61)
        • 일기 (26)
      • 고양이 (37)
        • 퓨리 (35)
      • 리뷰 (31)
        • 집 (5)
      • 취미 (12)
        • 디비전2 (0)
      • 정보 (10)
      • 개발 (12)
        • Flutter (11)
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 소개
    • 러닝
    • EDC
    • 방명록
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
까망고양이
키보드 show/hide 감지하기
상단으로

티스토리툴바