From 9144664c98824924e3d7668557a4455693bcf7f6 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Tue, 16 Aug 2022 15:14:43 +0200 Subject: saving and reading --- lib/pages/add_shift_page.dart | 33 +++++++++++++++++++++++++-------- lib/pages/agenda_page.dart | 16 +++++++--------- lib/pages/home_page.dart | 14 +++++++++----- 3 files changed, 41 insertions(+), 22 deletions(-) (limited to 'lib/pages') diff --git a/lib/pages/add_shift_page.dart b/lib/pages/add_shift_page.dart index 64b6142..d81ae3e 100644 --- a/lib/pages/add_shift_page.dart +++ b/lib/pages/add_shift_page.dart @@ -32,6 +32,9 @@ class _AddShiftPageState extends State { void addShift() { DateTime startDate = widget.mondayOfWeek; switch (dropdownValue) { + case 'Maandag': + startDate = startDate.add(Duration(days: 0)); + break; case 'Dinsdag': startDate = startDate.add(Duration(days: 1)); break; @@ -52,20 +55,34 @@ class _AddShiftPageState extends State { break; } - shiftProvider.addShift(Shift( - start: startDate, - type: isSelected[0] - ? ShiftType.Dagrit - : isSelected[1] - ? ShiftType.Avondrit - : ShiftType.Terugscannen)); + ShiftType type = ShiftType.Dagrit; + if (isSelected[1]) type = ShiftType.Avondrit; + if (isSelected[2]) type = ShiftType.Terugscannen; + + switch (type) { + case ShiftType.Dagrit: + startDate = startDate.add(Duration(hours: 10)); + break; + case ShiftType.Avondrit: + startDate = startDate.add(Duration( + hours: startDate.weekday == 6 ? 15 : 17, + minutes: startDate.weekday == 6 ? 30 : 0)); + break; + case ShiftType.Terugscannen: + startDate = startDate.add( + Duration(hours: startDate.weekday == 6 ? 13 : 14, minutes: 30)); + break; + } + + shiftProvider.addShift(Shift(start: startDate, type: type)); Navigator.pop(context, true); // Previous page will not refresh without this. Navigator.pushAndRemoveUntil( context, - MaterialPageRoute(builder: (context) => HomePage()), + MaterialPageRoute( + builder: (context) => HomePage(agendaWeekNr: widget.pageIndex)), (Route route) => false, ); } diff --git a/lib/pages/agenda_page.dart b/lib/pages/agenda_page.dart index 55c7360..a273cd0 100644 --- a/lib/pages/agenda_page.dart +++ b/lib/pages/agenda_page.dart @@ -9,10 +9,12 @@ import 'package:training_planner/widgets/agenda_week.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; class AgendaPage extends StatefulWidget { + final int agendaWeekNr; + @override _AgendaPageState createState() => _AgendaPageState(); - const AgendaPage({Key? key}) : super(key: key); + const AgendaPage({Key? key, required this.agendaWeekNr}) : super(key: key); } class _AgendaPageState extends State { @@ -28,10 +30,12 @@ class _AgendaPageState extends State { initState() { super.initState(); + weekToStartAt = widget.agendaWeekNr; weeks = getWeeks(); currentSelectedPageIndex = weekToStartAt; currentSelectedPageNr = weekNrs[weekToStartAt]; + currentSelectedWeek = dateTimes[weekToStartAt]; } List getWeeks() { @@ -52,7 +56,7 @@ class _AgendaPageState extends State { bool isCurrentWeek = false; if (mondayOfWeek == firstDayOfCurrentWeek) { - weekToStartAt = i; + if (weekToStartAt == 0) weekToStartAt = i; isCurrentWeek = true; } @@ -102,13 +106,7 @@ class _AgendaPageState extends State { pageIndex: currentSelectedPageIndex, mondayOfWeek: currentSelectedWeek, )), - ).then((val) => { - setState(() { - weeks = getWeeks(); - currentSelectedPageIndex = weekToStartAt; - currentSelectedPageNr = weekNrs[weekToStartAt]; - }) - }); + ); }, backgroundColor: Style.titleColor, child: const Icon(Icons.add), diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index 821caed..6b81451 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -6,27 +6,31 @@ import 'package:training_planner/main.dart'; import 'package:training_planner/style/style.dart'; class HomePage extends StatefulWidget { + int agendaWeekNr; @override _HomePageState createState() => _HomePageState(); - const HomePage({Key? key}) : super(key: key); + HomePage({Key? key, required this.agendaWeekNr}) : super(key: key); } class _HomePageState extends State { int _selectedIndex = 0; - static final List _widgetOptions = [ - new AgendaPage(), - new LogbookPage(), - ]; + List _widgetOptions = []; @override initState() { + _widgetOptions = [ + new AgendaPage(agendaWeekNr: widget.agendaWeekNr), + new LogbookPage(), + ]; + super.initState(); } void _onItemTapped(int index) { setState(() { + widget.agendaWeekNr = 0; _selectedIndex = index; }); } -- cgit v1.2.3-70-g09d2