import 'dart:async'; import 'package:animated_digit/animated_digit.dart'; import 'package:flutter/cupertino.dart'; class AnimatedTime extends StatefulWidget { final Duration Function() callback; const AnimatedTime({Key? key, required this.callback}) : super(key: key); @override State createState() => _AnimatedTimeState(); } class _AnimatedTimeState extends State { Duration current = Duration.zero; @override void initState() { super.initState(); Timer.periodic(const Duration(seconds: 1), (Timer t) => update()); } void update() { setState(() { current = widget.callback(); }); } @override Widget build(BuildContext context) { return Row( children: [ const Text("Noch "), buildWidget(current.inDays), const Text(" Tage, "), buildWidget(current.inHours > 24 ? current.inHours - current.inDays * 24 : current.inHours), const Text(":"), buildWidget(current.inMinutes > 60 ? current.inMinutes - current.inHours * 60 : current.inMinutes), const Text(":"), buildWidget(current.inSeconds > 60 ? current.inSeconds - current.inMinutes * 60 : current.inSeconds), const Text(""), ], ); } AnimatedDigitWidget buildWidget(int value) { return AnimatedDigitWidget( value: value, duration: const Duration(milliseconds: 100), textStyle: const TextStyle(fontSize: 15), ); } }