frosty/lib/widgets/uptime.dart
Tommy 3af5406f60
Update linting and formatting rules (#261)
* Add new linting rules

* Apply new linting rules

* Fix dart sdk version

* Format code to 80 lines
2023-04-29 11:34:28 -04:00

49 lines
1 KiB
Dart

import 'dart:async';
import 'dart:ui';
import 'package:flutter/material.dart';
/// A widget that displays a timer representing the time since the given start time.
/// The timer is updated every second.
class Uptime extends StatefulWidget {
final String startTime;
final TextStyle? style;
const Uptime({
Key? key,
required this.startTime,
this.style,
}) : super(key: key);
@override
State<Uptime> createState() => _UptimeState();
}
class _UptimeState extends State<Uptime> {
Timer? _timer;
@override
void initState() {
super.initState();
_timer =
Timer.periodic(const Duration(seconds: 1), (timer) => setState(() {}));
}
@override
Widget build(BuildContext context) {
return Text(
DateTime.now()
.difference(DateTime.parse(widget.startTime))
.toString()
.split('.')[0],
style: widget.style
?.copyWith(fontFeatures: [const FontFeature.tabularFigures()]),
);
}
@override
void dispose() {
_timer?.cancel();
super.dispose();
}
}