Common Date and Time fomatters
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:tasq/utils/app_time.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
import '../../models/notification_item.dart';
|
||||
@@ -13,7 +14,6 @@ import '../../providers/profile_provider.dart';
|
||||
import '../../providers/tasks_provider.dart';
|
||||
import '../../providers/tickets_provider.dart';
|
||||
import '../../providers/typing_provider.dart';
|
||||
import '../../utils/app_time.dart';
|
||||
import '../../widgets/mono_text.dart';
|
||||
import '../../widgets/responsive_body.dart';
|
||||
import '../../widgets/tasq_adaptive_list.dart';
|
||||
@@ -203,7 +203,7 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
||||
label: Text(
|
||||
_selectedDateRange == null
|
||||
? 'Date range'
|
||||
: _formatDateRange(_selectedDateRange!),
|
||||
: AppTime.formatDateRange(_selectedDateRange!),
|
||||
),
|
||||
),
|
||||
if (_hasTaskFilters)
|
||||
@@ -636,17 +636,6 @@ Map<String, int> _taskStatusCounts(List<Task> tasks) {
|
||||
return counts;
|
||||
}
|
||||
|
||||
String _formatDateRange(DateTimeRange range) {
|
||||
return '${_formatDate(range.start)} - ${_formatDate(range.end)}';
|
||||
}
|
||||
|
||||
String _formatDate(DateTime value) {
|
||||
final year = value.year.toString().padLeft(4, '0');
|
||||
final month = value.month.toString().padLeft(2, '0');
|
||||
final day = value.day.toString().padLeft(2, '0');
|
||||
return '$year-$month-$day';
|
||||
}
|
||||
|
||||
class _StatusSummaryRow extends StatelessWidget {
|
||||
const _StatusSummaryRow({required this.counts});
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tasq/utils/app_time.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:supabase_flutter/supabase_flutter.dart';
|
||||
@@ -809,32 +810,6 @@ class _TicketDetailScreenState extends ConsumerState<TicketDetailScreen> {
|
||||
return office?.name ?? ticket.officeId;
|
||||
}
|
||||
|
||||
String _formatDate(DateTime value) {
|
||||
final local = value.toLocal();
|
||||
final monthNames = [
|
||||
'Jan',
|
||||
'Feb',
|
||||
'Mar',
|
||||
'Apr',
|
||||
'May',
|
||||
'Jun',
|
||||
'Jul',
|
||||
'Aug',
|
||||
'Sep',
|
||||
'Oct',
|
||||
'Nov',
|
||||
'Dec',
|
||||
];
|
||||
final month = monthNames[local.month - 1];
|
||||
final day = local.day.toString().padLeft(2, '0');
|
||||
final year = local.year.toString();
|
||||
final hour24 = local.hour;
|
||||
final hour12 = hour24 % 12 == 0 ? 12 : hour24 % 12;
|
||||
final minute = local.minute.toString().padLeft(2, '0');
|
||||
final ampm = hour24 >= 12 ? 'PM' : 'AM';
|
||||
return '$month $day, $year $hour12:$minute $ampm';
|
||||
}
|
||||
|
||||
Future<void> _showTimelineDialog(BuildContext context, Ticket ticket) async {
|
||||
await showDialog<void>(
|
||||
context: context,
|
||||
@@ -866,7 +841,7 @@ class _TicketDetailScreenState extends ConsumerState<TicketDetailScreen> {
|
||||
Widget _timelineRow(String label, DateTime? value) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(bottom: 8),
|
||||
child: Text('$label: ${value == null ? '—' : _formatDate(value)}'),
|
||||
child: Text('$label: ${value == null ? '—' : AppTime.formatDate(value)}'),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:tasq/utils/app_time.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
import '../../models/office.dart';
|
||||
@@ -10,7 +11,6 @@ import '../../providers/notifications_provider.dart';
|
||||
import '../../providers/profile_provider.dart';
|
||||
import '../../providers/tickets_provider.dart';
|
||||
import '../../providers/typing_provider.dart';
|
||||
import '../../utils/app_time.dart';
|
||||
import '../../widgets/mono_text.dart';
|
||||
import '../../widgets/responsive_body.dart';
|
||||
import '../../widgets/tasq_adaptive_list.dart';
|
||||
@@ -148,7 +148,7 @@ class _TicketsListScreenState extends ConsumerState<TicketsListScreen> {
|
||||
label: Text(
|
||||
_selectedDateRange == null
|
||||
? 'Date range'
|
||||
: _formatDateRange(_selectedDateRange!),
|
||||
: AppTime.formatDateRange(_selectedDateRange!),
|
||||
),
|
||||
),
|
||||
if (_hasTicketFilters)
|
||||
@@ -500,17 +500,6 @@ Map<String, int> _statusCounts(List<Ticket> tickets) {
|
||||
return counts;
|
||||
}
|
||||
|
||||
String _formatDateRange(DateTimeRange range) {
|
||||
return '${_formatDate(range.start)} - ${_formatDate(range.end)}';
|
||||
}
|
||||
|
||||
String _formatDate(DateTime value) {
|
||||
final year = value.year.toString().padLeft(4, '0');
|
||||
final month = value.month.toString().padLeft(2, '0');
|
||||
final day = value.day.toString().padLeft(2, '0');
|
||||
return '$year-$month-$day';
|
||||
}
|
||||
|
||||
class _StatusSummaryRow extends StatelessWidget {
|
||||
const _StatusSummaryRow({required this.counts});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user