From fb7e6b97634d2ed628a5d6d00b5a710efbeeb213 Mon Sep 17 00:00:00 2001 From: DGoiana Date: Thu, 11 Jan 2024 19:48:16 +0000 Subject: [PATCH 1/4] DateTime extension --- uni/lib/utils/date_time_formatter.dart | 24 ++++++++++++++++++++++++ uni/lib/view/home/widgets/exam_card.dart | 9 ++++----- 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 uni/lib/utils/date_time_formatter.dart diff --git a/uni/lib/utils/date_time_formatter.dart b/uni/lib/utils/date_time_formatter.dart new file mode 100644 index 000000000..64be5025b --- /dev/null +++ b/uni/lib/utils/date_time_formatter.dart @@ -0,0 +1,24 @@ +import 'package:intl/intl.dart'; +import 'package:uni/model/entities/app_locale.dart'; + +extension DateTimeExtensions on DateTime { + String weekDay(AppLocale locale) { + return DateFormat.EEEE(locale.localeCode.languageCode) + .dateSymbols + .WEEKDAYS[weekday % 7]; + } + + String month(AppLocale locale) { + return DateFormat.EEEE(locale.localeCode.languageCode) + .dateSymbols + .MONTHS[this.month - 1]; + } + + String formattedDate(AppLocale locale) { + if (locale == AppLocale.pt) { + return '${weekDay(locale)}, $day de ${month(locale)}'; + } else { + return '${weekDay(locale)}, $day ${month(locale)}'; + } + } +} diff --git a/uni/lib/view/home/widgets/exam_card.dart b/uni/lib/view/home/widgets/exam_card.dart index 4e349807d..55930d70a 100644 --- a/uni/lib/view/home/widgets/exam_card.dart +++ b/uni/lib/view/home/widgets/exam_card.dart @@ -5,6 +5,7 @@ import 'package:uni/generated/l10n.dart'; import 'package:uni/model/entities/app_locale.dart'; import 'package:uni/model/entities/exam.dart'; import 'package:uni/model/providers/lazy/exam_provider.dart'; +import 'package:uni/utils/date_time_formatter.dart'; import 'package:uni/utils/drawer_items.dart'; import 'package:uni/view/common_widgets/date_rectangle.dart'; import 'package:uni/view/common_widgets/generic_card.dart'; @@ -117,13 +118,11 @@ class ExamCard extends GenericCard { children: [ if (locale == AppLocale.pt) ...[ DateRectangle( - date: '''${exam.weekDay(locale)}, ''' - '''${exam.begin.day} de ${exam.month(locale)}''', + date: exam.begin.formattedDate(locale), ), ] else ...[ DateRectangle( - date: '''${exam.weekDay(locale)}, ''' - '''${exam.begin.day} ${exam.month(locale)}''', + date: exam.begin.formattedDate(locale), ), ], RowContainer( @@ -152,7 +151,7 @@ class ExamCard extends GenericCard { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${exam.begin.day} de ${exam.month(locale)}', + exam.begin.formattedDate(locale), style: Theme.of(context).textTheme.bodyLarge, ), ExamTitle( From 0ce3820e2b0dc8a992f0acf9e06bc5efcb8c9fa7 Mon Sep 17 00:00:00 2001 From: DGoiana Date: Sat, 27 Jan 2024 23:13:24 +0100 Subject: [PATCH 2/4] Using DateFormat --- uni/lib/utils/date_time_formatter.dart | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/uni/lib/utils/date_time_formatter.dart b/uni/lib/utils/date_time_formatter.dart index 64be5025b..50064da5f 100644 --- a/uni/lib/utils/date_time_formatter.dart +++ b/uni/lib/utils/date_time_formatter.dart @@ -15,10 +15,6 @@ extension DateTimeExtensions on DateTime { } String formattedDate(AppLocale locale) { - if (locale == AppLocale.pt) { - return '${weekDay(locale)}, $day de ${month(locale)}'; - } else { - return '${weekDay(locale)}, $day ${month(locale)}'; - } + return DateFormat.yMMMMd(locale.localeCode.languageCode).format(this); } } From 29cf18ccdd359f449ef59f1ece428697acaba453 Mon Sep 17 00:00:00 2001 From: DGoiana Date: Fri, 9 Feb 2024 17:43:48 +0000 Subject: [PATCH 3/4] Date formatter extension implementation --- uni/lib/utils/date_time_formatter.dart | 2 +- uni/lib/view/exams/exams.dart | 14 +++++++++----- uni/lib/view/home/widgets/exam_card.dart | 2 +- uni/lib/view/home/widgets/next_exams_card.dart | 12 +++--------- .../view/home/widgets/remaining_exams_card.dart | 3 ++- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/uni/lib/utils/date_time_formatter.dart b/uni/lib/utils/date_time_formatter.dart index 50064da5f..840b4cc91 100644 --- a/uni/lib/utils/date_time_formatter.dart +++ b/uni/lib/utils/date_time_formatter.dart @@ -15,6 +15,6 @@ extension DateTimeExtensions on DateTime { } String formattedDate(AppLocale locale) { - return DateFormat.yMMMMd(locale.localeCode.languageCode).format(this); + return DateFormat.MMMMd(locale.localeCode.languageCode).format(this); } } diff --git a/uni/lib/view/exams/exams.dart b/uni/lib/view/exams/exams.dart index 29cf0315f..1b31ca222 100644 --- a/uni/lib/view/exams/exams.dart +++ b/uni/lib/view/exams/exams.dart @@ -4,10 +4,10 @@ import 'package:uni/controller/local_storage/preferences_controller.dart'; import 'package:uni/generated/l10n.dart'; import 'package:uni/model/entities/exam.dart'; import 'package:uni/model/providers/lazy/exam_provider.dart'; +import 'package:uni/utils/date_time_formatter.dart'; import 'package:uni/view/common_widgets/expanded_image_label.dart'; import 'package:uni/view/common_widgets/pages_layouts/general/general.dart'; import 'package:uni/view/common_widgets/row_container.dart'; -import 'package:uni/view/exams/widgets/day_title.dart'; import 'package:uni/view/exams/widgets/exam_page_title.dart'; import 'package:uni/view/exams/widgets/exam_row.dart'; import 'package:uni/view/lazy_consumer.dart'; @@ -120,10 +120,14 @@ class ExamsPageViewState extends GeneralPageViewState { Widget createExamsCards(BuildContext context, List exams) { final locale = Provider.of(context).getLocale(); final examCards = [ - DayTitle( - day: exams[0].begin.day.toString(), - weekDay: exams[0].weekDay(locale), - month: exams[0].month(locale), + Container( + padding: const EdgeInsets.only(top: 15, bottom: 3), + alignment: Alignment.center, + child: Text( + '${exams.first.weekDay(locale)}, ' + '${exams.first.begin.formattedDate(locale)}', + style: Theme.of(context).textTheme.titleLarge, + ), ), ]; for (var i = 0; i < exams.length; i++) { diff --git a/uni/lib/view/home/widgets/exam_card.dart b/uni/lib/view/home/widgets/exam_card.dart index d7a701ea1..d9ed6f049 100644 --- a/uni/lib/view/home/widgets/exam_card.dart +++ b/uni/lib/view/home/widgets/exam_card.dart @@ -97,4 +97,4 @@ class ExamCard extends GenericCard { dateA?.month == dateB?.month && dateA?.day == dateB?.day; } -} \ No newline at end of file +} diff --git a/uni/lib/view/home/widgets/next_exams_card.dart b/uni/lib/view/home/widgets/next_exams_card.dart index e258d65bf..88d99a672 100644 --- a/uni/lib/view/home/widgets/next_exams_card.dart +++ b/uni/lib/view/home/widgets/next_exams_card.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:uni/model/entities/app_locale.dart'; import 'package:uni/model/entities/exam.dart'; +import 'package:uni/utils/date_time_formatter.dart'; import 'package:uni/view/common_widgets/date_rectangle.dart'; import 'package:uni/view/common_widgets/row_container.dart'; import 'package:uni/view/exams/widgets/exam_row.dart'; @@ -14,11 +14,12 @@ class NextExamsWidget extends StatelessWidget { @override Widget build(BuildContext context) { + final locale = Provider.of(context).getLocale(); return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ DateRectangle( - date: exams.isNotEmpty ? getFormattedDate(exams.first, context) : '', + date: exams.isNotEmpty ? exams.first.begin.formattedDate(locale) : '', ), Column( children: exams.map((exam) { @@ -38,11 +39,4 @@ class NextExamsWidget extends StatelessWidget { ], ); } - - String getFormattedDate(Exam exam, BuildContext context) { - final locale = Provider.of(context).getLocale(); - return locale == AppLocale.pt - ? '${exam.weekDay(locale)}, ${exam.begin.day} de ${exam.month(locale)}' - : '${exam.weekDay(locale)}, ${exam.begin.day} ${exam.month(locale)}'; - } } diff --git a/uni/lib/view/home/widgets/remaining_exams_card.dart b/uni/lib/view/home/widgets/remaining_exams_card.dart index 1b2afeb97..f6fdb1eb0 100644 --- a/uni/lib/view/home/widgets/remaining_exams_card.dart +++ b/uni/lib/view/home/widgets/remaining_exams_card.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:uni/model/entities/exam.dart'; +import 'package:uni/utils/date_time_formatter.dart'; import 'package:uni/view/common_widgets/row_container.dart'; import 'package:uni/view/exams/widgets/exam_title.dart'; import 'package:uni/view/locale_notifier.dart'; @@ -25,7 +26,7 @@ class RemainingExamsWidget extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${exam.begin.day} ${exam.month(locale)}', + exam.begin.formattedDate(locale), style: Theme.of(context).textTheme.bodyLarge, ), ExamTitle( From 991b0743326d68e52b799de821fbc00379d4be46 Mon Sep 17 00:00:00 2001 From: DGoiana Date: Fri, 9 Feb 2024 17:49:17 +0000 Subject: [PATCH 4/4] Deleting useless file --- uni/lib/view/exams/widgets/day_title.dart | 26 ----------------------- 1 file changed, 26 deletions(-) delete mode 100644 uni/lib/view/exams/widgets/day_title.dart diff --git a/uni/lib/view/exams/widgets/day_title.dart b/uni/lib/view/exams/widgets/day_title.dart deleted file mode 100644 index b0626a86b..000000000 --- a/uni/lib/view/exams/widgets/day_title.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:uni/generated/l10n.dart'; - -class DayTitle extends StatelessWidget { - const DayTitle({ - required this.day, - required this.weekDay, - required this.month, - super.key, - }); - final String day; - final String weekDay; - final String month; - - @override - Widget build(BuildContext context) { - return Container( - padding: const EdgeInsets.only(top: 15, bottom: 3), - alignment: Alignment.center, - child: Text( - '$weekDay, $day ${S.of(context).of_month} $month', - style: Theme.of(context).textTheme.titleLarge, - ), - ); - } -}