상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
원나라의 주요 문서와 기록물은 어떤 것이 있었나요?
USB 드라이브의 수명은 얼마나 되나요?
USB 장치의 포맷 방법은 무엇인가요?
세이셸의 기후는 어떤가요?
당나라의 주요 건축 양식은 어떤 것들이 있나요?
명나라와 청나라의 차이점은 무엇인가요?
명나라의 전통 놀이 문화는 어떤 것이 있었나요?
OECD의 'Green Growth' 전략은 무엇인가요?
블랙 호크의 조종사 훈련 과정은 어떻게 이루어지나요?
블랙 호크의 연료 효율성은 어떤가요?
위나라의 주요 예술 작품은 무엇이 있나요?
위나라의 주요 교육 기관은 어디에 있었나요?
Previous
Next
수정하기 - 플러터에서 스와이프 제스처를 처리하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Flutter에서 스와이프 제스처를 처리하는 방법은 여러 가지가 있으며, 주로 `<a href='https://sangseek.com/sangseeks/GestureDetector/ko'>GestureDetector</a>` 위젯을 사용하여 구현합니다. 스와이프 제스처는 사용자가 화면을 터치한 후 손가락을 움직여 특정 방향으로 밀 때 발생하는 제스처입니다. Flutter에서는 이러한 제스처를 감지하고 처리하기 위해 다양한 속성과 메서드를 제공합니다. 1. GestureDetector 사용하기 `GestureDetector`는 Flutter에서 다양한 제스처를 감지할 수 있는 위젯입니다. 스와이프 제스처를 처리하기 위해 `onHorizontalDragUpdate`, `onVerticalDragUpdate`, `onHorizontalDragEnd`, `onVerticalDragEnd`와 같은 콜백을 사용할 수 있습니다. 기본 예제 ```dart import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: SwipeDemo(), ); } } class SwipeDemo extends <a href='https://sangseek.com/sangseeks/StatefulWidget/ko'>StatefulWidget</a> { @override _SwipeDemoState createState() => _SwipeDemoState(); } class _SwipeDemoState extends State<SwipeDemo> { String _swipeDirection = "Swipe Here"; void _onSwipe(DragEndDetails details) { if (details.velocity.pixelsPerSecond.dx > 0) { setState(() { _swipeDirection = "Swiped Right!"; }); } else { setState(() { _swipeDirection = "Swiped Left!"; }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("Swipe Gesture Demo")), body: Center( child: GestureDetector( onHorizontalDragEnd: _onSwipe, child: Container( width: 200, height: 200, color: Colors.blue, child: Center( child: Text( _swipeDirection, style: TextStyle(color: Colors.white, fontSize: 24), ), ), ), ), ), ); } } ``` 위의 예제에서는 `GestureDetector`를 사용하여 수평 스와이프 제스처를 감지합니다. 사용자가 박스를 스와이프하면 방향에 따라 텍스트가 변경됩니다. 2. 스와이프 방향 감지하기 스와이프 방향을 감지하기 위해 `onHorizontalDragUpdate`와 `onVerticalDragUpdate`를 사용할 수 있습니다. 이 메서드들은 사용자가 드래그하는 동안 호출되며, 드래그의 방향과 거리를 기반으로 스와이프 방향을 결정할 수 있습니다. 예제 ```dart void _onDragUpdate(DragUpdateDetails details) { if (details.delta.dx > 0) { // 오른쪽으로 스와이프 } else if (details.delta.dx < 0) { // 왼쪽으로 스와이프 } if (details.delta.dy > 0) { // 아래로 스와이프 } else if (details.delta.dy < 0) { // 위로 스와이프 } } ``` 3. 스와이프 제스처에 애니메이션 추가하기 스와이프 제스처에 애니메이션을 추가하여 사용자 경험을 향상시킬 수 있습니다. `AnimatedContainer`를 사용하여 스와이프에 따라 크기나 색상을 변경하는 애니메이션을 추가할 수 있습니다. 예제 ```dart class SwipeDemo extends StatefulWidget { @override _SwipeDemoState createState() => _SwipeDemoState(); } class _SwipeDemoState extends State<SwipeDemo> { double _containerWidth = 200; double _containerHeight = 200; void _onSwipe(DragEndDetails details) { setState(() { if (details.velocity.pixelsPerSecond.dx > 0) { _containerWidth += 50; _containerHeight += 50; } else { _containerWidth -= 50; _containerHeight -= 50; } }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("Swipe Gesture with Animation")), body: Center( child: GestureDetector( onHorizontalDragEnd: _onSwipe, child: AnimatedContainer( duration: Duration(milliseconds: 300), width: _containerWidth, height: _containerHeight, color: Colors.blue, child: Center( child: Text( "Swipe Me!", style: TextStyle(color: Colors.white, fontSize: 24), ), ), ), ), ), ); } } ``` 4. Swipe to Dismiss Flutter에서는 `Dismissible` 위젯을 사용하여 스와이프하여 항목을 삭제하는 기능을 쉽게 구현할 수 있습니다. 이 위젯은 리스트 항목을 스와이프하여 삭제할 수 있는 기능을 제공합니다. 예제 ```dart class SwipeToDismissDemo extends StatelessWidget { final List<String> items = List.generate(20, (index) => "Item $index"); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("Swipe to Dismiss")), body: ListView.builder( itemCount: items.length, itemBuilder: (context, index) { return Dismissible( key: Key(items[index]), onDismissed: (direction) { items.removeAt(index); ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text("${items[index]} dismissed")), ); }, background: Container(color: Colors.red), child: ListTile(title: Text(items[index])), ); }, ), ); } } ``` 결론 Flutter에서 스와이프 제스처를 처리하는 방법은 다양하며, `GestureDetector`, `Dismissible`과 같은 위젯을 활용하여 쉽게 구현할 수 있습니다. 스와이프 제스처를 통해 사용자와의 상호작용을 더욱 풍부하게 만들 수 있으며, 애니메이션과 결합하여 더욱 매력적인 UI를 제공할 수 있습니다. 이러한 기능들을 적절히 활용하여 사용자 경험을 향상시키는 것이 중요합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기