circle_wheel 0.0.1
circle_wheel: ^0.0.1 copied to clipboard
A highly customizable circular wheel widget for Flutter that supports 360-degree rotation, multiple hotspots, smooth animations, and rich interaction options. Perfect for radial menus, selection wheel [...]
circle_wheel #
A powerful and flexible circular wheel widget for Flutter that enables you to create beautiful, interactive radial layouts with smooth 360-degree rotation.
Flutter에서 아름답고 상호작용이 가능한 방사형 레이아웃을 부드러운 360도 회전으로 구현할 수 있는 유연한 원형 휠 위젯입니다.
Examples / 예제 #
[Circle Wheel Example 1] | [Circle Wheel Example 2] | [Circle Wheel Example 3] |
---|
Features / 특징 #
Rich Rotation Controls / 풍부한 회전 제어
- Smooth 360-degree rotation with gesture support / 제스처를 지원하는 부드러운 360도 회전
- Customizable rotation resistance and animation curves / 회전 저항과 애니메이션 곡선 커스터마이징
- Optional bounce-back effects / 선택적 바운스백 효과
Smart Hotspot System / 스마트 핫스팟 시스템
- Define single or multiple hotspot positions / 단일 및 다중 핫스팟 위치 정의
- Dynamic item scaling at hotspots / 핫스팟에서의 동적 아이템 크기 조절
- Customizable hotspot angles and ranges / 커스터마이징 가능한 핫스팟 각도와 범위
Flexible Styling / 유연한 스타일링
- Support for any widget as items / 모든 위젯을 아이템으로 지원
- Dynamic scaling and animations / 동적 크기 조절과 애니메이션
- Flexible layout options (full or partial circles) / 유연한 레이아웃 옵션 (부채꼴도 가능함)
Performance Optimized / 성능 최적화
- Optional visibility-based rendering / 선택적 가시성 기반 렌더링
- Smooth animations and transitions / 부드러운 애니메이션과 전환
Accessibility Ready / 접근성 지원
- Semantic labels support / 시맨틱 레이블 지원
- Optional haptic feedback / 선택적 햅틱 피드백
- Configurable interaction modes / 설정 가능한 상호작용 모드
Platform Support / 플랫폼 지원 #
Platform / 플랫폼 | Support / 지원 |
---|---|
Android | ✅ |
iOS | ✅ |
Web | ✅ |
Windows | ✅ |
macOS | ✅ |
Linux | ✅ |
Requirements / 요구사항 #
- Dart SDK: ^3.5.4
- Flutter: >=1.17.0
- Android: minSdkVersion 16
- iOS: iOS 11.0 or higher
- Web: All modern browsers
- Desktop: Windows 10+, macOS 10.14+, Linux (GTK 3.x)
Installation / 설치 #
Add circle_wheel to your pubspec.yaml: pubspec.yaml에 circle_wheel을 추가하세요:
dependencies:
circle_wheel: ^0.1.0
Basic Usage / 기본 사용법 #
import 'package:circle_wheel/circle_wheel.dart';
CircleWheel(
radius: 150,
itemCount: 8,
itemBuilder: (index, isAtHotspot) {
return Icon(
Icons.star,
size: isAtHotspot ? 32 : 24,
color: isAtHotspot ? Colors.amber : Colors.grey,
);
},
)
Advanced Usage / 고급 사용법 #
Interactive Menu / 대화형 메뉴 #
CircleWheel(
radius: 150,
itemCount: 6,
snapToHotspot: true,
hotspotScale: 1.2,
onItemSelected: (index) {
// Handle item selection
// 아이템 선택 처리
},
itemBuilder: (index, isAtHotspot) {
return MenuOption(
icon: menuIcons[index],
label: menuLabels[index],
isSelected: isAtHotspot,
);
},
)
Auto-Rotating Display / 자동 회전 디스플레이 #
CircleWheel(
radius: 180,
itemCount: 12,
autoRotate: true,
autoRotateSpeed: 0.5,
itemBuilder: (index, isAtHotspot) {
return AnimatedContainer(
duration: Duration(milliseconds: 200),
width: isAtHotspot ? 100 : 80,
height: isAtHotspot ? 100 : 80,
child: YourCustomWidget(),
);
},
)
Customization / 커스터마이징 #
Core Options / 주요 옵션 #
Animation Options / 애니메이션 옵션
rotationDuration
: Duration of rotation animations / 회전 애니메이션 지속 시간rotationCurve
: Animation curve for rotations / 회전 애니메이션 곡선hotspotTransitionDuration
: Duration of hotspot transitions / 핫스팟 전환 지속 시간autoRotate
: Enable automatic rotation / 자동 회전 활성화autoRotateSpeed
: Speed of automatic rotation / 자동 회전 속도
Layout Options / 레이아웃 옵션
radius
: Wheel radius / 휠 반지름startAngle
: Starting angle of the wheel / 휠 시작 각도endAngle
: Optional ending angle for partial wheels / 부분 휠을 위한 선택적 종료 각도innerRadius
: Optional inner radius for ring layouts / 링 레이아웃을 위한 선택적 내부 반지름
Interaction Options / 상호작용 옵션
snapToHotspot
: Enable snapping to hotspots / 핫스팟 스냅 활성화rotationResistance
: Control rotation sensitivity / 회전 감도 제어bounceBack
: Enable bounce-back effect / 바운스백 효과 활성화multipleHotspots
: Define multiple hotspot positions / 다중 핫스팟 위치 정의
Contributing / 기여하기 #
Contributions are welcome! Please feel free to submit a Pull Request.
열심히 만들었습니다만... 안되는 부분이 있거나 추가하고 싶은 기능이 있다면 pr 또는 이슈를 올려주세요! 코드 리뷰도 환영합니다... (초보예요)
License / 라이선스 #
MIT License
Copyright (c) 2024 Your Name
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.