InkWell, GestureDetector

Stupefyee's avatar
Dec 30, 2024
InkWell, GestureDetector
💡
위젯에 클릭이벤트 등의 이벤트를 삽입 가능하게 해줌

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), ), ), ], ), ); } }
  • 출력
    • notion image

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. 주요 차이점

  1. 리플 효과: InkWell은 자동 제공, GestureDetector는 없음.
  1. 용도: InkWell은 단순 클릭용, GestureDetector는 제스처 제어용.
Share article

stupefyee