FLUTTER ECOSYSTEM

aryzhov/flutter-timer-builder

一個 Flutter 小部件,會在預定的、週期性或動態產生的時間事件上重新建構。

flutter-timer-builder 專案封面
Stars
38
Forks
10
最近推送(UTC)
2022年7月30日
專案狀態
未封存
Alex Ryzhov GitHub avatar
GITHUB User

Alex Ryzhov ↗

I am making contributions to this project in my personal capacity. I am not conveying any rights to any intellectual property of any third parties.

Los Gatos, California, USA官方網站 ↗
語言Dart

此儲存庫發佈的套件

使用的依賴

依賴清單 2 項
  • flutter{"sdk":"flutter"}
  • flutter_test開發依賴{"sdk":"flutter"}

原始 README

以下為英文專案原文快照,最新內容請造訪 GitHub。

展開 / 收合專案 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");
      }
    );
  }
  
}