티스토리 뷰
TextFiled가 포커싱 되었을 때 생성되는 keyboard에 의해 가려진다면, TextField를 보이는(visible) 영역으로 가져오면(스크롤하면) 된다.
그러기 위해서는 우선 TextFiled가 scroll 가능한 widget에 쌓여져 있어야 한다. 보통 SingleChildScorllView를 이용해서 감싸고 child 에는 Column 을 이용해서, 표시하고자 하는 위젯들을 나열한다. 이 중에 TextForm filed 가 있을 것이다.
이제 keyboard가 생성되어었을때 스크롤을 얼마나 해야하는지 알아와야 한다.
soft keyboard 는 system UI 이다.
System UI에 의해 가려지는 크기를 받아오는 코드는 아래와 같다.
MediaQuery.of(context).viewInsets
keyboard는 화면의 아래 쪽에서 올라와서 생성되므로 viewInsets 중 bottom 값을 가져오면된다.
MediaQuery.of(context).viewInsets.bottom
이 값을 TextField 의 scrollPadding 파라미터에 bottom padding 값으로 넣어준다.
TextFormField(
scrollPadding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
//(생략)
)
그리고 위에서 scorllPadding 을 넣어준 만큼 SingleChildScrollView 아래에도 여유 공간을 넣여줘야한다. 스크롤 할 공간이 있어야 스크롤이 가능하기 때문이다. 따라서 아래의 코드를 column 맨 아래에 넣어준다.
SizedBox(height: MediaQuery.of(context).viewInsets.bottom),
참고: page 가 Scaffold 를 사용하고 있다면 resizeToAvoidBottomInset 은 false 로 해야 하는 것 같음....내 코드에서는 scaffold를 사용하지 않아 테스트 해보지는 못함
참고자료
스택오브플로에서 봤던 자료 못찾겠음
https://seosh817.tistory.com/144
'Dart & Flutter > Error 해결 정리' 카테고리의 다른 글
블루투스의 의도하지 않은 연결 해제 후, 다른 장비와 연결이 안될 때 (0) | 2024.03.21 |
---|---|
Module was compiled with an incompatible version of Kotlin 에러 (0) | 2024.03.13 |
WidgetBinding.instance.addPostFrameCallback 이 호출되지 않는다. (0) | 2023.09.14 |
TextFormField 에서 text 의 vertical alignment 가 안 맞는 문제 (0) | 2023.09.11 |
Firebase crashlytics 를 적용해보려는데.... (0) | 2023.05.04 |
- Total
- Today
- Yesterday
- Flutter
- 플러터
- 문제 해결
- IOS
- 다트
- 앱
- Syncfusion
- 디자인
- 인사이트
- firebase
- 앱개발
- 한빛미디어
- 이미지
- addPostFrameCallback
- UX
- UI
- TextField
- TextFormField
- position
- BLE
- hide
- DART
- Bluetooth
- error
- plugin
- 에러
- SizedBox
- 크롬
- Chrome
- 앱 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |