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<AnimatedTime> createState() => _AnimatedTimeState();
}

class _AnimatedTimeState extends State<AnimatedTime> {
  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),
    );
  }
}