util.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import 'package:app_settings/app_settings.dart';
  2. import 'package:fast/view/component/alert_widget.dart';
  3. import 'package:flutter/material.dart';
  4. class Util {
  5. Size boundingTextSize(String text, TextStyle style,
  6. {int maxLines = 2 ^ 31, double maxWidth = double.infinity}) {
  7. TextPainter textPainter = TextPainter(
  8. textDirection: TextDirection.ltr,
  9. text: TextSpan(text: text, style: style),
  10. maxLines: maxLines)
  11. ..layout(maxWidth: maxWidth);
  12. return textPainter.size;
  13. }
  14. int getYearFromTimenum(int num) {
  15. String dayNum = num.toString();
  16. return int.parse(dayNum.substring(0, 4));
  17. }
  18. int getMonthFromTimenum(int num) {
  19. String dayNum = num.toString();
  20. return int.parse(dayNum.substring(4, 6));
  21. }
  22. int getDayFromTimenum(int num) {
  23. String dayNum = num.toString();
  24. return int.parse(dayNum.substring(6, 8));
  25. }
  26. String checkFormateDate(DateTime date,DateTime now){
  27. if (date.day == now.day){
  28. return '今天'+ date.hour.toString().padLeft(2,'0')+':'+date.minute.toString().padLeft(2,'0');
  29. }
  30. DateTime yesterday = DateTime.fromMillisecondsSinceEpoch(now.millisecondsSinceEpoch-24*3600*1000);
  31. if (date.day==yesterday.day){
  32. return '昨天'+ date.hour.toString().padLeft(2,'0')+':'+date.minute.toString().padLeft(2,'0');
  33. }
  34. DateTime tomorrow = DateTime.fromMillisecondsSinceEpoch(now.millisecondsSinceEpoch+24*3600*1000);
  35. if (date.day==tomorrow.day){
  36. return '明天'+ date.hour.toString().padLeft(2,'0')+':'+date.minute.toString().padLeft(2,'0');
  37. }
  38. return date.month.toString().padLeft(2,'0')+'月'+date.day.toString().padLeft(2,'0')+'日 '+ date.hour.toString().padLeft(2,'0')+':'+date.minute.toString().padLeft(2,'0');
  39. }
  40. String betweenTime(DateTime start,DateTime end){
  41. int seconds = (end.millisecondsSinceEpoch-start.millisecondsSinceEpoch)~/1000;
  42. // int hours = seconds~/3600;
  43. // int minutes = seconds%3600~/60;
  44. // String str = '';
  45. // if (hours>0){
  46. // str = hours.toString()+'小时';
  47. // }
  48. // if (minutes>0){
  49. // str = str+minutes.toString()+'分钟';
  50. // }
  51. return betweenTimeBySeconds(seconds);
  52. }
  53. String betweenTimeBySeconds(int seconds){
  54. int hours = seconds~/3600;
  55. int minutes = seconds%3600~/60;
  56. String str = '';
  57. if (hours>0){
  58. str = hours.toString()+'小时';
  59. }
  60. if (minutes>0){
  61. str = str+minutes.toString()+'分钟';
  62. }
  63. return str;
  64. }
  65. void showNotificationStatus(BuildContext context) {
  66. showDialog(
  67. context: context,
  68. barrierDismissible: false,
  69. barrierColor: const Color(0xF2000D1F),
  70. builder: (BuildContext context) {
  71. return AlertWidget(
  72. title: '为了您的计时能得到及时提醒\n请开启fast16cc为你提供的消息通知推送',
  73. confirm: '去开启',
  74. confirmCallback: () {
  75. AppSettings.openNotificationSettings();
  76. Navigator.of(context).pop();
  77. });
  78. });
  79. }
  80. }