티스토리 뷰
system UI (status bar/navigation bar) 안 보이게 만들기
낭초비 2023. 10. 25. 10:57main() 에서 아래의 코드를 추가하면 시스템 UI 인 status bar(top) 와 navigation bar( bottom) 이 숨겨진 채로 Full screen에 대해서 앱의 UI 가 표시된다.
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
그런데 앱 실행중에 status bar, navigation bar 가 생성될 수 있는 제스쳐를 취하게 되면 숨겨두었던 system UI 가 나타나면서 UI 가 overflow 될 수 있다.
이를 감지해서 다시 system UI 를 숨겨 두기 위한 코드도 추가해 두었었다. system UI 를 감지하고 2초 후에 다시 원래 상태로 되돌리는 명령이다.
SystemChrome.setSystemUIChangeCallback((systemOverlaysAreVisible) async {
await Future.delayed(const Duration(seconds: 2));
SystemChrome.restoreSystemUIOverlays();
});
하지만 위의 두 코드를 넣어서 만들었을 경우, system UI 를 생성하는 제스쳐 후 2초 동안은 bottom overflow 에 의해서 app 의 UI가 망가지는 것이었다. 그 원인은 앱을 구현할 때 height 부분을 처음 mediaqury 에서 받아온 height 를 기반으로 계산한 fixed 값을 사용 했기 때문이다. 이러한 코드를 일일이 flexable 하게 바꿔 주는 작업을 할 까하다가 작업이 많아 보여서 먼저 SystemChrome 의 메서드를 찾아보다가 해답을 찾았다.
위의 첫번째 코드들 대신에 그냥, SystemUiMode 를 immersiveSticky 로 해주면 되었다.
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
처음에 설정했던 SystemUiMode.manual 이나 SystemUiMode.immersive 는 앱 시작할 때는 system UI 가 숨겨져 있지만 system UI 를 생성시키는 제스쳐를 하게 되면 그 뒤로는 쭈~~욱 system UI 표시 되는데, SystemUiMode.immersiveSticky 는 잠시 표시되었다가 다시 사라진다. 물론 표시되는 사이에 overflow 도 발생하지 않고.
'Dart & Flutter > 궁금했던 것, 몰랐던 것' 카테고리의 다른 글
Riverpod 을 자동생성기로 생성할 때 State Provider 는 지원하지 않음 (0) | 2024.07.26 |
---|---|
TextField 영역 바깥을 터치시 keyboard 숨기기 (0) | 2024.01.17 |
팝업창 위치 조정 (0) | 2023.10.16 |
Top bar 또는 bottom navigation 을 숨겼는데 다시 생겨서 overflow 발생할 때 (0) | 2023.09.05 |
iOS 14 이상에서는 개발과정에서 설치한 앱 실행 안됨 (0) | 2023.02.08 |
- Total
- Today
- Yesterday
- Flutter
- 앱개발
- 앱 프로그래밍
- 에러
- 인사이트
- TextField
- TextFormField
- 앱
- addPostFrameCallback
- DART
- 크롬
- 플러터
- 다트
- BLE
- SizedBox
- IOS
- firebase
- error
- 이미지
- position
- hide
- Syncfusion
- Chrome
- plugin
- UX
- 디자인
- 한빛미디어
- Bluetooth
- 문제 해결
- UI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |