mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-19 00:03:32 +00:00
55 lines
1.2 KiB
Dart
55 lines
1.2 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import '../utils/dateutils.dart';
|
|
|
|
class AppBottomFocusModeStatus extends StatefulWidget {
|
|
final DateTime? disableTime;
|
|
|
|
const AppBottomFocusModeStatus({super.key, required this.disableTime});
|
|
|
|
@override
|
|
State<AppBottomFocusModeStatus> createState() =>
|
|
_AppBottomFocusModeStatusState();
|
|
}
|
|
|
|
class _AppBottomFocusModeStatusState extends State<AppBottomFocusModeStatus> {
|
|
Timer? updateTimer;
|
|
Duration? timeUntil;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_updateTimeUntil();
|
|
updateTimer = Timer.periodic(Duration(seconds: 1), (_) {
|
|
setState(() {
|
|
_updateTimeUntil();
|
|
});
|
|
});
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
print('Disposing');
|
|
updateTimer?.cancel();
|
|
super.dispose();
|
|
}
|
|
|
|
void _updateTimeUntil() {
|
|
timeUntil = widget.disableTime?.difference(DateTime.now());
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final title = timeUntil == null
|
|
? 'Focus Mode'
|
|
: 'Focus Mode for ${timeUntil!.simpleLabel}';
|
|
return Text(
|
|
title,
|
|
style: Theme.of(context).textTheme.bodyLarge!.copyWith(
|
|
fontWeight: FontWeight.bold,
|
|
),
|
|
);
|
|
}
|
|
}
|