Coaspe

Flutter - OverlayEntry 본문

Flutter/API

Flutter - OverlayEntry

Coaspe 2023. 2. 17. 13:56

위젯을 포함하는 Overlay 안의 장소

 

Overlay entries는 OverlayState.insert or OverlayState.insertAll 함수를 사용하여 Overlay 에 삽입됩니다. 주어진 BuildContext 에서 가장 가까이에 둘러싸고있는 Overlay를 찾고 싶다면,  Overlay.of 함수를 사용하세요.

 

Overlay entrey 오직 1개의 overlay 안에만 속할 수 있습니다. Overlay 에서 entry를 제거하고 싶다면, overlay entry에서 remove 함수를 호출하세요.

 

OverlayStack 레이아웃을 사용하므로, 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을 호출하고, 그것은 유저의 배터리를 불필요하게 사용합니다.

 

OverlayEntrybuilder가 빌드한 위젯이 마운트되거나 마운트 해제될 때 이를 알려주는 ChangeNotifier 이며, 정확한 상태는  mounted로 쿼리할 수 있습니다.

 

See also:

 

상속 구조

생성자

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
Comments