반응형
Flutter에서 터치 이벤트(클릭, 드래그, 더블탭 등)를 처리하려면 반드시 GestureDetector나 InkWell을 사용해야 합니다.
이 둘의 차이와 실무 사용 팁을 깔끔히 정리해드립니다!
✅ 1. GestureDetector란?
GestureDetector
는 터치 제스처 감지용 기본 위젯입니다.
클릭, 더블탭, 롱프레스, 드래그 등 다양한 제스처를 감지할 수 있어요.
GestureDetector(
onTap: () {
print('탭!');
},
onDoubleTap: () {
print('더블 탭!');
},
onLongPress: () {
print('롱 프레스!');
},
child: Container(
color: Colors.amber,
padding: EdgeInsets.all(20),
child: Text('터치해보세요'),
),
)
✔️ 배경색과 함께 클릭 가능!
✅ 2. InkWell이란?
InkWell
은 머티리얼 디자인에서 ripple(물결) 효과를 제공하는 터치 위젯입니다.
즉, 터치 시 물결 효과가 생겨 더 자연스러운 버튼 UX를 만듭니다.
InkWell(
onTap: () {
print('InkWell 탭!');
},
child: Container(
padding: EdgeInsets.all(20),
child: Text('InkWell로 터치해보세요'),
),
)
✔️ Container가 Material
위젯 안에 있어야 물결 효과가 잘 나타납니다.
✅ 3. GestureDetector vs InkWell
구분 | GestureDetector | InkWell |
---|---|---|
기능 | 제스처 감지 전용 (모든 제스처) | 터치 + 머티리얼 효과 |
효과 | 효과 없음 | Ripple(물결) 효과 제공 |
권장 사용 | 제스처 로직 필요할 때 | 버튼/카드 클릭 효과 필요할 때 |
✅ 4. InkWell + Material 예시
InkWell은 반드시 Material
위젯이 부모로 있어야 합니다.
Material(
color: Colors.transparent,
child: InkWell(
onTap: () {},
child: Container(
padding: EdgeInsets.all(20),
child: Text('InkWell + Material'),
),
),
)
✔️ InkWell 단독으로는 물결 효과가 보이지 않으니 주의!
✅ 5. 실무에서 자주 쓰는 팁
- 복잡한 제스처는 GestureDetector 사용
- 버튼 클릭 효과는 InkWell + Material 조합 사용
- 커스텀 버튼 → GestureDetector 대신 InkWell 활용
📌 다음 편 예고
- 👉 위젯 시리즈: Flutter Dialog & BottomSheet 제대로 쓰는 법
반응형
'개발일기' 카테고리의 다른 글
🍞 Flutter 위젯 시리즈: SnackBar & Toast 완전 정복 (7) | 2025.07.09 |
---|---|
💬 Flutter 위젯 시리즈: Dialog & BottomSheet 완전 정복 (20) | 2025.07.08 |
🎠 Flutter 위젯 시리즈: PageView & Carousel Slider 완전 정복 (22) | 2025.07.03 |
✨ Flutter 위젯 시리즈: Hero 애니메이션과 전환 효과 완전 정복 (27) | 2025.07.02 |
📚 Flutter 위젯 시리즈: Sliver & CustomScrollView 완전 정복 (25) | 2025.07.01 |