패키지, 저장소 및 앱 카테고리 검색

timer_builder 표지
패키지 상세v2.0.0

timer_builder

예정된 주기적 또는 동적으로 생성된 시간 이벤트에서 자신을 다시 빌드하는 위젯입니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
1.5만
좋아요
168
Pub 점수
150

패키지 설치

flutter pub add timer_builder

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

TimerBuilder는 주기적인 틱이나 사용자 정의 시간 스케줄과 같은 시간 기반 이벤트에 반응하여 UI를 자동으로 다시 빌드하는 Flutter 위젯입니다. 수동 상태 관리 없이 카운트다운 타이머, 실시간 시계, 실시간 업데이트를 쉽게 만들 수 있습니다. 동적 시간 로직을 지원하므로 실행 중에 갱신 간격이 변경되는 시나리오에 적합합니다. Android, iOS, Web, macOS, Windows, Linux 등 모든 주요 플랫폼에서 작동합니다.

사용 사례

  • 실시간 시계 표시
  • 카운트다운 타이머
  • 동적 갱신 간격
  • 실시간 데이터 업데이트
  • 애니메이션 카운트다운
  • 주기적인 UI 새로 고침

주요 기능

  • 시간 이벤트에서 다시 빌드
  • 동적 타이밍을 지원합니다
  • 크로스 플랫폼 호환성
  • 최소한의 보일러플레이트
  • 간단한 API
  • Timer 객체가 필요하지 않습니다

적합한 대상

  • 타이머를 구축하는 개발자
  • 실시간 업데이트가 필요한 앱
  • 시간에 따라 달라지는 콘텐츠를 가진 UI
  • 간단한 카운트다운 구현
  • 수동 타이머 관리를 피하는 프로젝트

고려 사항

  • 고주기 업데이트에 적합하지 않음
  • dispose의 처리에 주의가 필요합니다
  • 잘못 사용할 경우 성능 문제를 일으킬 수 있습니다
  • 시간 기반 트리거에 한정
  • 복잡한 스케줄링을 지원하지 않습니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

TimerBuilder

A widget that rebuilds itself on scheduled, periodic, or dynamically generated time events.

Here are some use cases for this widget:

  • When showing time since or until a specified event;
  • When the model updates frequently but you want to limit UI update frequency;
  • When showing current date or time;
  • When the representation a widget depends on a certain time event.

animated image

Examples

Periodic rebuild
import 'package:timer_builder/timer_builder.dart';

class ClockWidget extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return TimerBuilder.periodic(Duration(seconds: 1),
      builder: (context) {
        return Text("${DateTime.now()}");
      }
    );
  }
  
}
Rebuild on a schedule
import 'package:timer_builder/timer_builder.dart';

class StatusIndicator extends StatelessWidget {

  final DateTime startTime;
  final DateTime endTime;
  
  StatusIndicator(this.startTime, this.endTime);
  
  @override
  Widget build(BuildContext context) {
    return TimerBuilder.scheduled([startTime, endTime],
      builder: (context) {
        final now = DateTime.now();
        final started = now.compareTo(startTime) >= 0;
        final ended = now.compareTo(endTime) >= 0;
        return Text(started ? ended ? "Ended": "Started": "Not Started");
      }
    );
  }
  
}

카테고리

소스 저장소

이 패키지를 사용하는 프로젝트