[개발] Flutter

[Flutter] onPressed / onTap 차이

  • -
반응형

Flutter의 onPressed와 onTap 차이

onPressedonTap은 Flutter에서 터치 이벤트를 처리할 때 사용하는 두 가지 주요 콜백 함수입니다. 둘 다 사용자의 상호작용을 감지하고 특정 동작을 실행하는 데 사용되지만, 사용하는 컨텍스트와 제공하는 기능에 차이가 있습니다.

 

 

 

 

 

onPressed

onPressed는 버튼 위젯(예: ElevatedButton, TextButton, FloatingActionButton 등)에서 사용되는 콜백 함수입니다. 사용자가 버튼을 눌렀을 때 호출되며, 주로 버튼과 함께 사용됩니다.

onPressed 예시


ElevatedButton(
  onPressed: () {
    print('버튼이 클릭되었습니다.');
  },
  child: Text('클릭하세요'),
)
    
  • 사용 용도: 버튼과 같은 위젯에서만 사용 가능
  • 주로 사용되는 위젯: ElevatedButton, TextButton, IconButton
  • 비활성화 가능: onPressed 속성에 null을 전달하면 버튼을 비활성화할 수 있음

 

 

 

 

 

 

 

onTap

onTapGestureDetector 또는 InkWell과 같은 위젯에서 터치 제스처를 처리하기 위해 사용됩니다. onTap은 단순한 터치뿐만 아니라 다양한 제스처를 처리할 수 있는 기능도 제공합니다.

onTap 예시 (InkWell 사용)


InkWell(
  onTap: () {
    print('위젯이 터치되었습니다.');
  },
  child: Container(
    padding: EdgeInsets.all(20),
    color: Colors.blue,
    child: Text('터치하세요'),
  ),
)
    
  • 사용 용도: 다양한 위젯에 터치 이벤트를 추가할 수 있음 (이미지, 텍스트 등)
  • 주로 사용되는 위젯: GestureDetector, InkWell
  • 다양한 제스처 처리: onDoubleTap, onLongPress 등 다른 제스처와 함께 사용 가능

 

 

 

 

 

 

 

 

onPressed와 onTap의 차이

구분 onPressed onTap
사용되는 위젯 버튼 위젯 (ElevatedButton, TextButton 등) 제스처 감지 위젯 (InkWell, GestureDetector)
주 사용 목적 버튼 클릭 처리 위젯의 터치, 더블탭, 길게 누름 등 다양한 제스처 처리
제스처 처리 단일 터치(클릭)만 처리 다양한 제스처 처리 가능 (예: onDoubleTap, onLongPress 등)
비활성화 여부 null을 설정하여 비활성화 가능 비활성화 기능 없음, 제스처 감지 위젯에서는 모든 제스처를 직접 처리

 

 

 

 

 

 

 

 

결론

Flutter에서 onPressedonTap은 사용 목적에 따라 다르게 사용됩니다. onPressed는 버튼과 같은 위젯에 주로 사용되고, onTap은 다양한 위젯에서 터치 이벤트를 처리하는 데 사용됩니다. 제스처에 더 많은 유연성이 필요할 경우 onTapInkWell 또는 GestureDetector를 사용하는 것이 좋습니다.

반응형

'[개발] Flutter' 카테고리의 다른 글

[Flutter] await rootBundle.loadString 란?  (0) 2024.09.25
[Flutter] Future 란?  (0) 2024.09.24
[Flutter] State<StatefulWidget> 란?  (0) 2024.09.23
[Flutter] {super.key} 란?  (0) 2024.09.22
[Flutter] StatefulWidget 란?  (0) 2024.09.21
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.