위젯에 클릭이벤트 등의 이벤트를 삽입 가능하게 해줌
1. InkWell
1. 역할
- 터치 효과(리플 애니메이션)를 제공하는 위젯.
2. 주요 속성
onTap
: 클릭 이벤트 처리.
onLongPress
: 길게 누르기 이벤트 처리.
borderRadius
: 효과 영역의 모서리 반경 설정.
3. 특징
- 머티리얼 디자인 리플 효과 포함.
- 머티리얼 디자인 테마를 상속받아 스타일 자동 적용.
4. 사용 예
- 버튼, 카드 등 시각적 효과가 필요한 요소.
5. 예시코드와 출력
- 예시코드
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
InkWell(
onTap: () {
print("클릭됨");
},
child: ListTile(
leading: Icon(Icons.person),
title: Text("제목111111"),
//subtitle: Text("내용......"),
//trailing: Icon(Icons.add),
),
),
],
),
);
}
}
- 출력

2. GestureDetector
1. 역할
- 사용자 제스처를 감지하는 다목적 위젯.
2. 주요 속성:
onTap
: 클릭 이벤트 처리.
onPanUpdate
: 드래그 중인 위치 변화 감지.
onDoubleTap
: 더블 클릭 이벤트 처리.
3. 특징
- 모든 제스처 감지 가능(탭, 스와이프, 핀치 등).
- 시각적 효과 없음(커스터마이징 필요).
4. 사용 예
- 제스처 기반 인터페이스 구현.
5. 예시코드 (출력은 위와 같음)
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
GestureDetector(
onTap: () {
print("클릭됨");
},
child: ListTile(
leading: Icon(Icons.person),
title: Text("제목111111"),
//subtitle: Text("내용......"),
//trailing: Icon(Icons.add),
),
),
],
),
);
}
}
3. 주요 차이점
- 리플 효과: InkWell은 자동 제공, GestureDetector는 없음.
- 용도: InkWell은 단순 클릭용, GestureDetector는 제스처 제어용.
Share article