일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- flutter statefulwidget
- Architectural overview
- 파이썬 부동소수점
- 발로란트 api dart
- flutter widget
- 파이썬
- 롤토체스 api dart
- leetcode dart
- PlatformException(sign_in_failed
- dart.dev
- widget
- flutter
- dart new
- flutter android 폴더
- valorant api dart
- swift concurrency
- 롤 api dart
- com.google.GIDSignIn
- generate parentheses dart
- tft api dart
- dart new 키워드
- AnimationController
- flutter bloc
- swift 동시성
- docker overview
- riot api dart
- lol api dart
- flutter ios 폴더
- dart
- keychain error
- Today
- Total
Coaspe
Flutter - OverlayEntry 본문
위젯을 포함하는 Overlay 안의 장소
Overlay entries는 OverlayState.insert or OverlayState.insertAll 함수를 사용하여 Overlay 에 삽입됩니다. 주어진 BuildContext 에서 가장 가까이에 둘러싸고있는 Overlay를 찾고 싶다면, Overlay.of 함수를 사용하세요.
Overlay entrey 오직 1개의 overlay 안에만 속할 수 있습니다. Overlay 에서 entry를 제거하고 싶다면, overlay entry에서 remove 함수를 호출하세요.
Overlay는 Stack 레이아웃을 사용하므로, Overay entries는 Overlay 안에서 위치를 정하기 위해 Positioned and AnimatedPositioned 를 사용 할 수 있습니다.
예를 들면, Draggable은 드래그가 시작된 후 스크린을 가로지르는 유저의 손을 따라가는 드래그 아바타를 보여주기 위해 OverlayEntry를 사용합니다. 드래그 아바타를 디스플레이하기 위해 overlay를 사용하는 것은 아바타가 앱 안의 다른 위젯들 위에 떠있을 수 있게 해줍니다. 유저의 손가락이 움직일 때, draggable은 리빌드하기위해 overlay entry에서 markNeedsBuild를 호출합니다. 빌드 할 때, entry는 Positioned의 top, left 프로퍼티를 드래그 아바타와 가까이 있는 유저의 손가락의 위치로 설정합니다. 드래그가 끝나면, Draggable은 뷰에서 드래그 아바타를 제거하기 위해 overlay에서 entry를 제거합니다.
디폴트로, 완전히 opaque entry가 있다면, 그 entry는 위젯 트리에 포함되지 않습니다.(특히, Overlay entry 안에 있는 stateful 위젯들은 인스턴트화 되지 않습니다.) Overlay entry가 보이지 않는 상태지만 여전히 존재한다는 것을 보장하고 싶다면, maintainState을 true로 설정하세요. 이 작업은 비용이 많이 드므로, 주의해서 사용하세요. 특히, maintainState가 true로 설정되어있는 overlay entry 안에 있는 위젯들은 반복적으로 State.setState을 호출하고, 그것은 유저의 배터리를 불필요하게 사용합니다.
OverlayEntry는 builder가 빌드한 위젯이 마운트되거나 마운트 해제될 때 이를 알려주는 ChangeNotifier 이며, 정확한 상태는 mounted로 쿼리할 수 있습니다.
See also:
상속 구조
- Object
- ChangeNotifier
- OverlayEntry
생성자
required WidgetBuilder builder,
bool opaque = false, # 해당 Entry가 전체 overlay를 가리는지 결정
bool maintainState = false # opaque entry가 위에 있을 지라도 해당 entry가 트리에 포함되게 할 것인지 결정
})
'Flutter > API' 카테고리의 다른 글
Flutter - CompositedTransformFollower (0) | 2023.02.17 |
---|---|
Flutter - Overlay (1) | 2023.02.17 |
Flutter - SlideTransition (0) | 2023.02.17 |
Flutter - FloatingActionButton (0) | 2023.02.17 |
Flutter - AnimatedBuilder (0) | 2023.02.17 |