본문 바로가기
개발언어/Flutter

[Flutter] MediaQuery 사용 시 키보드가 나타나면 화면이 다시 로드 되는 문제

by 후쮸아빠 2020. 5. 4.

항상 발생하는 문제는 아닌 것 같으며, 다음 조건에 경우 발생하는 것으로 보입니다. 

 

-. 부모화면에서 새로운 화면을 MaterialPageRoute으로 뛰운 경우

-. 자식 화면에서 MediaQuery를  사용한 경우(Padding 위젯에서 화면의 가로 크기를 가져와야 하는 경우 사용)

-. 자식 화면에서 FutureBuilder를 사용한 경우

 

위와 같은 조건에서 키보드가 나타나면은(TextFormField 클릭 시) 자식 화면이 다시 로드 되버린다.

키보드가 나타나면서 화면 레이아웃 바뀌고 MediaQuery가 작동되면서 부모화면에서 자식 화면을 다시 띄우는?? 뭐 이런 것 같은데..

MediaQuery가 부모화면까지 영향이 가는 듯하다...

 

정확히는 이해가 안되고...해결 방법은 자식화면에만 적용되는 MediaQuery를 사용하면 되나보다..

 

MediaQuery.of(context).size.width 대신 MediaQueryData.fromWindow(WidgetsBinding.instance.window).size.width 사용했다. 

 

화면 가로 크기 ^^ 

MediaQueryData.fromWindow(WidgetsBinding.instance.window).size.width

 

 

https://github.com/flutter/flutter/issues/37878

 

Opening or closing a TextField causes MaterialPageRoute to rebuild the page · Issue #37878 · flutter/flutter

Steps to Reproduce Create a new flutter project, and replace the contents of your main.dart file with the following: import 'package:flutter/material.dart'; void main() => runApp(MyApp()...

github.com