From febc2e2559896eb0c316a0c44df120241dcc1978 Mon Sep 17 00:00:00 2001 From: heyrahulsaini Date: Fri, 23 Feb 2024 20:01:07 +0530 Subject: [PATCH] Ignore the first day of the week --- lib/habits/calendar_header.dart | 2 +- lib/habits/habit.dart | 2 +- lib/model/settings_data.dart | 4 ++-- lib/settings/settings_manager.dart | 4 ++-- lib/settings/settings_screen.dart | 15 ++++++++++++--- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/habits/calendar_header.dart b/lib/habits/calendar_header.dart index 6594155..9d38c14 100644 --- a/lib/habits/calendar_header.dart +++ b/lib/habits/calendar_header.dart @@ -21,7 +21,7 @@ class CalendarHeader extends StatelessWidget { BuildContext ctx, int index, ) { - int start = settingsManager.getWeekStartEnum.index; + int start = settingsManager.getWeekStartEnum?.index ?? (DateTime.now().weekday % 7); int day = (start + index) % StartingDayOfWeek.values.length; TextStyle tex = const TextStyle(fontSize: 18, color: Colors.grey); if (day == 5 || day == 6) // Sat or Sun diff --git a/lib/habits/habit.dart b/lib/habits/habit.dart index eaddb7c..1c673aa 100644 --- a/lib/habits/habit.dart +++ b/lib/habits/habit.dart @@ -259,7 +259,7 @@ class HabitState extends State { onPageChanged: setSelectedDay, onDaySelected: _onDaySelected, startingDayOfWeek: - Provider.of(context).getWeekStartEnum, + Provider.of(context).getWeekStartEnum ?? StartingDayOfWeek.values[DateTime.now().weekday % 7], calendarBuilders: CalendarBuilders( defaultBuilder: (context, date, _) { return OneDayButton( diff --git a/lib/model/settings_data.dart b/lib/model/settings_data.dart index 6ef754a..3763e7c 100644 --- a/lib/model/settings_data.dart +++ b/lib/model/settings_data.dart @@ -5,7 +5,7 @@ import 'package:table_calendar/table_calendar.dart'; class SettingsData { Themes theme = Themes.device; - StartingDayOfWeek weekStart = StartingDayOfWeek.monday; + StartingDayOfWeek? weekStart = StartingDayOfWeek.monday; TimeOfDay dailyNotTime = const TimeOfDay(hour: 20, minute: 0); bool showDailyNot = true; bool soundEffects = true; @@ -43,7 +43,7 @@ class SettingsData { Map toJson() => { 'theme': theme.index, - 'weekStart': weekStart.index, + 'weekStart': weekStart?.index, 'notTime': '${dailyNotTime.hour.toString().padLeft(2, '0')}:${dailyNotTime.minute.toString().padLeft(2, '0')}', 'showDailyNot': showDailyNot, diff --git a/lib/settings/settings_manager.dart b/lib/settings/settings_manager.dart index 6462ec5..b286ccb 100644 --- a/lib/settings/settings_manager.dart +++ b/lib/settings/settings_manager.dart @@ -101,7 +101,7 @@ class SettingsManager extends ChangeNotifier { return _settingsData.theme; } - StartingDayOfWeek get getWeekStartEnum { + StartingDayOfWeek? get getWeekStartEnum { return _settingsData.weekStart; } @@ -147,7 +147,7 @@ class SettingsManager extends ChangeNotifier { notifyListeners(); } - set setWeekStart(StartingDayOfWeek value) { + set setWeekStart(StartingDayOfWeek? value) { _settingsData.weekStart = value; saveData(); notifyListeners(); diff --git a/lib/settings/settings_screen.dart b/lib/settings/settings_screen.dart index 69734fe..09e4a78 100644 --- a/lib/settings/settings_screen.dart +++ b/lib/settings/settings_screen.dart @@ -159,7 +159,7 @@ class _SettingsScreenState extends State { ), trailing: DropdownButton( alignment: Alignment.center, - items: StartingDayOfWeek.values.map((dynamic value) { + items: [...StartingDayOfWeek.values.map((dynamic value) { return DropdownMenuItem( alignment: Alignment.center, value: value, @@ -173,11 +173,20 @@ class _SettingsScreenState extends State { ), ); }).toList(), + const DropdownMenuItem( + alignment: Alignment.center, + value: "None", + child: Text( + "None", + textAlign: TextAlign.center, + ) + ) + ], value: Provider.of(context) - .getWeekStartEnum, + .getWeekStartEnum ?? "None", onChanged: (value) { Provider.of(context, listen: false) - .setWeekStart = value; + .setWeekStart = value is String ? null : value; }, ), ),