relative_time_text.dart 967 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. const RelativeTimeText({
  9. super.key,
  10. required this.timestamp,
  11. this.updateInterval = const Duration(minutes: 1),
  12. this.style,
  13. });
  14. @override
  15. State<RelativeTimeText> createState() => _RelativeTimeTextState();
  16. }
  17. class _RelativeTimeTextState extends State<RelativeTimeText> {
  18. late Timer _timer;
  19. @override
  20. void initState() {
  21. super.initState();
  22. _timer = Timer.periodic(widget.updateInterval, (_) => _updateTime());
  23. }
  24. void _updateTime() {
  25. if (mounted) {
  26. setState(() {});
  27. }
  28. }
  29. @override
  30. void dispose() {
  31. _timer.cancel();
  32. super.dispose();
  33. }
  34. @override
  35. Widget build(BuildContext context) {
  36. return Text(time2TimeDesc(widget.timestamp), style: widget.style);
  37. }
  38. }