DevBoi

[Flutter] textformfield 클릭시 화면이 리스트를 가리는 현상 본문

[Mobile]/[Flutter]

[Flutter] textformfield 클릭시 화면이 리스트를 가리는 현상

HiSmith 2024. 1. 17. 20:30
반응형

흔히 말하는 키보드영역때문에 화면이 가리는 것이다.

가려진 화면만큼 이동하는게 아니라 키보드가 고정처럼 붙어버려서

입력창을 클릭하면 화면이 가려져서 아래와 같이 해결했다.

 

 

우선 입력하는 위젯을 크게 scrollview로 감싸줬다.

SingleChildScrollView(
                      child: NewMessages2(
                        roomId: widget.chatResponse.id.toString(),
                        userId: userProvider.userInfo.id.toString(),
                        userName: userProvider.userInfo.name,
                      ),
                    )

 

사실 이렇게 해도 되지만 해당 위젯의 build 최상위에

아래와 같은 부분도 추가해줬다. 해당 부분을 추가해야지 키보드가 올라왔을때 화면을 밀어준다.

@override
  Widget build(BuildContext context) {
    mediaQueryData = MediaQuery.of(context);
    return SafeArea(
        child: GestureDetector(
          onTap: () {
            FocusScope.of(context).unfocus();
          },
          child: Scaffold(
              backgroundColor: appTheme.gray5002,
              resizeToAvoidBottomInset: true,

 

unfocus는 텍스트 폼이 포커스되었을때 밖부분을 클릭하면 포커스를 해제하도록 하는 메소드이다.

textformfield를 쓰면 거의 필수이다.(이게 좀 번거롭다)

 

 

무튼 키보드 관련 화면 가림 이슈가 있으면

SingleScrollview + Scaffold에 resize설정을 추가해주면된다.

추가로 bottomnavigationbar에 대한 기본 설정에 위젯을 쓰게 되면 이 옵션이든 뭐든 안먹는데

이건 아직 플러터 이슈라서 고치기 전인것같다.

그래서 그냥 Column으로 위젯들을 정의하고 사용해야한다

반응형