55 lines
1.3 KiB
Dart
55 lines
1.3 KiB
Dart
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'animatedTime.dart';
|
|
|
|
class Timer extends StatefulWidget {
|
|
final DateTime target;
|
|
final String? author;
|
|
final String label;
|
|
const Timer({Key? key, required this.target, this.author, required this.label}) : super(key: key);
|
|
|
|
@override
|
|
State<Timer> createState() => _TimerState();
|
|
}
|
|
|
|
class _TimerState extends State<Timer> {
|
|
late bool isLocal;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
isLocal = widget.author == null;
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return ListTile(
|
|
leading: const Icon(Icons.timer),
|
|
title: AnimatedTime(
|
|
callback: () {
|
|
if(widget.target.isBefore(DateTime.now())) return Duration.zero;
|
|
return widget.target.difference(DateTime.now());
|
|
},
|
|
),
|
|
trailing: Row(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
if(!isLocal) Row(
|
|
children: [
|
|
const Text("5"),
|
|
IconButton(onPressed: () {
|
|
|
|
}, icon: const Icon(Icons.thumb_up_outlined)),
|
|
],
|
|
),
|
|
IconButton(onPressed: () {
|
|
|
|
}, icon: const Icon(Icons.star_outline))
|
|
],
|
|
),
|
|
subtitle: Text("${widget.label}${!isLocal ? "\ngeteilt von ${widget.author}" : ""}"),
|
|
);
|
|
}
|
|
}
|