Countdown | CoUI

Countdown

숫자 값을 표시하는 카운트다운 디스플레이 컴포넌트

Countdown#

숫자 값(0-99)을 표시하는 디스플레이 컴포넌트입니다. 값이 변경될 때 전환 애니메이션이 적용됩니다. 타이머 로직은 부모 컴포넌트에서 관리합니다.

Live Preview#

Web
42
Flutter
Loading Flutter...
class CountdownDefaultExample extends StatefulComponent {
  const CountdownDefaultExample({super.key});

  @override
  State<CountdownDefaultExample> createState() =>
      _CountdownDefaultExampleState();
}

class _CountdownDefaultExampleState extends State<CountdownDefaultExample> {
  @override
  Component build(BuildContext context) {
    return CoCountdown(value: 42);
  }
}
class CountdownDefaultExample extends StatefulWidget {
  const CountdownDefaultExample({super.key});

  @override
  State<CountdownDefaultExample> createState() =>
      _CountdownDefaultExampleState();
}

class _CountdownDefaultExampleState extends State<CountdownDefaultExample> {
  @override
  Widget build(BuildContext context) {
    return const CoCountdown(value: 42);
  }
}

사용 시기 (When to Use)#

이 컴포넌트를 사용하세요:

  • 카운트다운 숫자를 크게 표시할 때
  • 시간 단위별 숫자를 개별 표시할 때 (시:분:초 각각)
  • 세션 타임아웃 등 남은 시간을 숫자로 표시할 때

대신 다른 컴포넌트를 사용하세요:

  • NumberTicker: 일반적인 숫자 애니메이션이 필요할 때
  • Progress: 남은 시간을 비율로 시각화할 때

기본 사용법 (Basic Usage)#

// 기본 카운트다운
CoCountdown(value: 42)

// 크기 조절
CoCountdown(value: 42, fontSize: 64)

// 시:분:초 조합
Row(
  children: [
    CoCountdown(value: hours),
    Text(':'),
    CoCountdown(value: minutes),
    Text(':'),
    CoCountdown(value: seconds),
  ],
)
// 기본 카운트다운
CoCountdown(value: 42)

// 크기 조절
CoCountdown(value: 42, fontSize: 64)

// 시:분:초 조합
div([
  CoCountdown(value: hours),
  span([text(':')]),
  CoCountdown(value: minutes),
  span([text(':')]),
  CoCountdown(value: seconds),
], classes: 'flex items-center gap-1')

Props / Parameters#

속성타입기본값설명
valueint필수표시할 숫자 값 (0-99로 클램핑)
fontSize double? 32.0 글자 크기 override
textStyle TextStyle? null Flutter 전용 텍스트 스타일 override

동작 스펙 (Behavior)#

인터랙션#

  • Countdown은 표시 전용 컴포넌트입니다. 인터랙션 없음.
  • 부모 컴포넌트에서 Timer로 value를 업데이트해야 합니다.

애니메이션#

  • Flutter: AnimatedSwitcher + FadeTransition으로 값 변경 시 페이드 전환
  • Web: CSS transition-opacity + CoreDuration.normal(200ms)로 값 변경 시 페이드 전환

접근성 (Accessibility)#

스크린 리더#

  • Flutter: Semantics(liveRegion: true)로 값 변경 알림
  • Web: aria-live="polite" + aria-label로 값 변경 알림

크로스 플랫폼 차이점 (Platform Differences)#

항목FlutterWeb
클래스명CoCountdownCoCountdown
기본 크기32px bold32px bold
애니메이션AnimatedSwitcher fadeCSS transition
  • NumberTicker: 일반 숫자 카운터 애니메이션
  • Stat: 레이블 + 값 형식의 통계 표시