반응형
질문
flutter에서 AbsorbPointer
와 IgnorePointer
의 차이점은 무엇인가요?
문서에는 다음과 같이 언급되어 있습니다:
AbsorbPointer
는 자체에서 히트 테스트를 종료하여 하위 트리가 포인터 이벤트를받지 못하게합니다.
IgnorePointer
는 자체적으로 히트 테스트에 투명하지만 하위 항목이 포인터 이벤트를받지 못하도록합니다.
두 가지 사이의 실제 차이점을 이해하지 못했습니다.
답변
차이점은 두 위젯이 서로 겹치고 클릭을 받을 수 있는 경우입니다.
빨간색과 파란색 사각형을 생각해보세요. 두 사각형 모두 클릭 가능하며, 파란색 사각형이 빨간색 사각형 위에 작게 겹쳐져 있습니다:
Stack(
alignment: Alignment.center,
children: [
Container(color: Colors.red),
Container(width: 42, height: 42, color: Colors.blue),
],
)
IgnorePointer
/AbsorbPointer
를 사용하지 않을 경우, 파란색 사각형을 탭하면 파란색에만 클릭 이벤트가 전송되고 빨간색은 아무런 이벤트도 받지 않습니다.
그 상황에서 파란색 사각형을 AbsorbPointer
로 감싸면 파란색 사각형을 탭할 때, 파란색 사각형과 빨간색 사각형 둘 다 클릭 이벤트를 받지 않습니다.
대신 IgnorePointer
를 사용하면, 파란색 사각형을 탭할 때 빨간색 사각형이 클릭 이벤트를 받게 됩니다.
반응형
댓글