relative_time_text.dart 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import 'dart:async';
  2. import 'package:flutter/cupertino.dart';
  3. import '../utils/common_util.dart';
  4. class RelativeTimeText extends StatefulWidget {
  5. final int? timestamp;
  6. final Duration updateInterval;
  7. final TextStyle? style;
  8. final String? startPerchText;
  9. final String? endPerchText;
  10. const RelativeTimeText({
  11. super.key,
  12. required this.timestamp,
  13. this.updateInterval = const Duration(minutes: 1),
  14. this.style,
  15. this.startPerchText,
  16. this.endPerchText,
  17. });
  18. @override
  19. State<RelativeTimeText> createState() => _RelativeTimeTextState();
  20. }
  21. class _RelativeTimeTextState extends State<RelativeTimeText> {
  22. late Timer _timer;
  23. @override
  24. void initState() {
  25. super.initState();
  26. _timer = Timer.periodic(widget.updateInterval, (_) => _updateTime());
  27. }
  28. void _updateTime() {
  29. if (mounted) {
  30. setState(() {});
  31. }
  32. }
  33. @override
  34. void dispose() {
  35. _timer.cancel();
  36. super.dispose();
  37. }
  38. @override
  39. Widget build(BuildContext context) {
  40. return Text(
  41. '${widget.startPerchText ?? ''}${time2TimeDesc(widget.timestamp)}${widget.endPerchText ?? ''}',
  42. style: widget.style);
  43. }
  44. }