Skip to content

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 wheels, and interactive circular layouts.

License

Notifications You must be signed in to change notification settings

swuhalee/circle_wheel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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도 회전으로 구현할 수 있는 유연한 원형 휠 위젯입니다.

pub package likes popularity style: flutter lints

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.0.1+2

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 또는 이슈를 올려주세요! 코드 리뷰도 환영합니다... (초보예요)

About

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 wheels, and interactive circular layouts.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published