搜索插件、代码仓与 APP 分类

timer_builder 封面
插件详情v2.0.0

timer_builder

一个在预定的、周期性的或动态生成的时间事件触发时重新构建自身的控件。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
1.5万
喜欢数
168
Pub 分数
150

安装插件

flutter pub add timer_builder

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

TimerBuilder 是一个 Flutter 小部件,它会自动响应基于时间的事件(如周期性滴答或自定义定时计划)来重建其 UI。它简化了倒计时器、实时时钟和实时更新的创建,而无需手动管理状态。该小部件支持动态定时逻辑,非常适合刷新间隔在运行时发生变化的场景。它可在所有主要平台(包括 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");
      }
    );
  }
  
}

所属分类

源码仓库

使用此插件的项目