[Flutter] Positioned 위젯이 클릭이 안된 이유

2AST_\·2022년 3월 25일
0

Flutter

목록 보기
2/4
post-thumbnail

해당 사진처럼 가게 이미지 위젯과 가게 상세정보를 겹쳐서 나타낼려면 Stack과 Positioned라는 위젯을 사용해서 적절히 배치하면 된다. 하지만 위젯 배치 이후, arrow_icon을 InkWell이나 Gesture Detector로 넣어줘도 클릭이 되지 않았다. 구글링 해보니 스택오버플로우에서도 똑같은 문제가 존재했다.

스택오버플로우 원문

결국 해답은 이렇다.

Positioned 위젯이 Stack 위젯 내에 존재해야 클릭될 수 있다.

Stack 위젯에서 Positioned 위젯이 오버플로우가 난 경우, 오버플로우난 위젯은 Gesture Detector나 InkWell로 아무리 감싸도 이벤트를 감지할 수 없었다. 그럼 해결방법은 무엇인가? 생각보다 간단했다.

상위 위젯(바닥에 깔려있는)을 Column 위젯 안에 넣어서 처리

위의 사진 처럼 Stack의 상위 children 위젯의 크기를 하위 위젯의 크기까지 덮일 수 있게끔 하면 되는 것이다. 효과적인 방법인지는 모르겠으나 일단 필자는 이렇게 해서 해당 문제를 해결할 수 있었다.

Scaffold의 body 전체를 Stack 위젯으로 감싸준다.

지금 생각해보니 아예 Scaffold의 body 전체를 Stack 위젯으로 감싸주고 적절히 Positioned 위젯을 배치하면 될 것 같다... 별로 어려운 문제는 아니였던 걸로...

잘 해결 된 모습

기존의 문제있는 사항이나 더 나은 방법이 있으면 댓글로 지적해주세요!

0개의 댓글