Skip to content

Commit 8bc8738

Browse files
authored
Preserve State of SegmentedButton in Calendar (#286)
1 parent f43a7cf commit 8bc8738

File tree

16 files changed

+102
-80
lines changed

16 files changed

+102
-80
lines changed

ios/Podfile.lock

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ PODS:
2020
- Firebase/RemoteConfig (= 11.2.0)
2121
- firebase_core
2222
- Flutter
23-
- FirebaseABTesting (11.3.0):
23+
- FirebaseABTesting (11.4.0):
2424
- FirebaseCore (~> 11.0)
2525
- FirebaseCore (11.2.0):
2626
- FirebaseCoreInternal (~> 11.0)
2727
- GoogleUtilities/Environment (~> 8.0)
2828
- GoogleUtilities/Logger (~> 8.0)
29-
- FirebaseCoreExtension (11.3.0):
29+
- FirebaseCoreExtension (11.4.1):
3030
- FirebaseCore (~> 11.0)
31-
- FirebaseCoreInternal (11.3.0):
31+
- FirebaseCoreInternal (11.4.0):
3232
- "GoogleUtilities/NSData+zlib (~> 8.0)"
3333
- FirebaseCrashlytics (11.2.0):
3434
- FirebaseCore (~> 11.0)
@@ -39,7 +39,7 @@ PODS:
3939
- GoogleUtilities/Environment (~> 8.0)
4040
- nanopb (~> 3.30910.0)
4141
- PromisesObjC (~> 2.4)
42-
- FirebaseInstallations (11.3.0):
42+
- FirebaseInstallations (11.4.0):
4343
- FirebaseCore (~> 11.0)
4444
- GoogleUtilities/Environment (~> 8.0)
4545
- GoogleUtilities/UserDefaults (~> 8.0)
@@ -52,7 +52,7 @@ PODS:
5252
- FirebaseSharedSwift (~> 11.0)
5353
- GoogleUtilities/Environment (~> 8.0)
5454
- "GoogleUtilities/NSData+zlib (~> 8.0)"
55-
- FirebaseRemoteConfigInterop (11.3.0)
55+
- FirebaseRemoteConfigInterop (11.4.0)
5656
- FirebaseSessions (11.3.0):
5757
- FirebaseCore (~> 11.0)
5858
- FirebaseCoreExtension (~> 11.0)
@@ -62,7 +62,7 @@ PODS:
6262
- GoogleUtilities/UserDefaults (~> 8.0)
6363
- nanopb (~> 3.30910.0)
6464
- PromisesSwift (~> 2.1)
65-
- FirebaseSharedSwift (11.3.0)
65+
- FirebaseSharedSwift (11.4.0)
6666
- Flutter (1.0.0)
6767
- flutter_native_splash (0.0.1):
6868
- Flutter
@@ -233,21 +233,21 @@ EXTERNAL SOURCES:
233233
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
234234

235235
SPEC CHECKSUMS:
236-
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
236+
device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342
237237
Firebase: 98e6bf5278170668a7983e12971a66b2cd57fc8c
238238
firebase_core: 2bedc3136ec7c7b8561c6123ed0239387b53f2af
239239
firebase_crashlytics: 37d104d457b51760b48504a93a12b3bf70995d77
240240
firebase_remote_config: d522653d828836503715498f1662901a6efcd809
241-
FirebaseABTesting: c4559fcd2eba9f6bdaf0599e2c37ded01c343e4c
241+
FirebaseABTesting: aef1719704fade00b200827e7973f352efc4caee
242242
FirebaseCore: a282032ae9295c795714ded2ec9c522fc237f8da
243-
FirebaseCoreExtension: 30bb063476ef66cd46925243d64ad8b2c8ac3264
244-
FirebaseCoreInternal: ac26d09a70c730e497936430af4e60fb0c68ec4e
243+
FirebaseCoreExtension: f1bc67a4702931a7caa097d8e4ac0a1b0d16720e
244+
FirebaseCoreInternal: 5c2b016f06a96fbf20d9b443459f80427a827d7b
245245
FirebaseCrashlytics: cfc69af5b53565dc6a5e563788809b5778ac4eac
246-
FirebaseInstallations: 58cf94dabf1e2bb2fa87725a9be5c2249171cda0
246+
FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414
247247
FirebaseRemoteConfig: fca0b2d017fc1de52b28a4e5bcf2007c1a840457
248-
FirebaseRemoteConfigInterop: c3a5c31b3c22079f41ba1dc645df889d9ce38cb9
248+
FirebaseRemoteConfigInterop: e76f46ffa4d6a65e273d4dfebb6a79e588cec136
249249
FirebaseSessions: 655ff17f3cc1a635cbdc2d69b953878001f9e25b
250-
FirebaseSharedSwift: d39c2ad64a11a8d936ce25a42b00df47078bb59c
250+
FirebaseSharedSwift: 505dae2d05969dbf6d43749a642bb1bf230f0252
251251
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
252252
flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
253253
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
@@ -260,7 +260,7 @@ SPEC CHECKSUMS:
260260
home_widget: 0434835a4c9a75704264feff6be17ea40e0f0d57
261261
map_launcher: 5fde49ac9a52672bf99da746599f507b4490d7b5
262262
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
263-
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
263+
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
264264
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
265265
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
266266
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47

lib/base/enums/user_preference.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ enum UserPreference {
88
browser(bool),
99
failedGrades(bool),
1010
weekends(bool),
11-
hiddenCalendarEntries(bool);
11+
hiddenCalendarEntries(bool),
12+
calendarTab(int);
1213

1314
final Type type;
1415

lib/base/routing/router_service.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:campus_flutter/base/routing/routes.dart';
22
import 'package:campus_flutter/onboardingComponent/viewModels/onboarding_viewmodel.dart';
3-
import 'package:campus_flutter/settingsComponent/viewModels/user_preferences_viewmodel.dart';
3+
import 'package:campus_flutter/settingsComponent/viewModels/settings_viewmodel.dart';
44
import 'package:campus_flutter/studentCardComponent/viewModel/student_card_viewmodel.dart';
55
import 'package:flutter_native_splash/flutter_native_splash.dart';
66
import 'package:flutter_riverpod/flutter_riverpod.dart';
@@ -17,7 +17,7 @@ class RouterService {
1717
Future<String> routingCallback(GoRouterState state) async {
1818
if (!_isInitialized) {
1919
if (await ref.read(onboardingViewModel).checkLogin() == true) {
20-
await ref.read(userPreferencesViewModel).loadPreferences();
20+
await ref.read(settingsViewModel).loadPreferences();
2121
await ref.read(studentCardViewModel).fetch(false);
2222
_isInitialized = true;
2323
FlutterNativeSplash.remove();

lib/calendarComponent/viewModels/calendar_viewmodel.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import 'dart:convert';
22

3+
import 'package:campus_flutter/base/enums/user_preference.dart';
34
import 'package:campus_flutter/calendarComponent/model/calendar_event.dart';
45
import 'package:campus_flutter/calendarComponent/services/calendar_preference_service.dart';
56
import 'package:campus_flutter/calendarComponent/services/calendar_service.dart';
67
import 'package:campus_flutter/main.dart';
8+
import 'package:campus_flutter/base/services/user_preferences_service.dart';
79
import 'package:flutter/material.dart';
810
import 'package:flutter_riverpod/flutter_riverpod.dart';
911
import 'package:home_widget/home_widget.dart';
@@ -153,6 +155,20 @@ class CalendarViewModel {
153155
updateHomeWidget(events.value ?? []);
154156
}
155157

158+
int getTabPreference() {
159+
return (getIt<UserPreferencesService>().load(
160+
UserPreference.calendarTab,
161+
) as int?) ??
162+
0;
163+
}
164+
165+
void saveTabPreference(int currentTab) {
166+
getIt<UserPreferencesService>().save(
167+
UserPreference.calendarTab,
168+
currentTab,
169+
);
170+
}
171+
156172
void resetPreferences() {
157173
_resetEventColors();
158174
_resetVisibility();

lib/calendarComponent/views/calendars_view.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class _CalendarsViewState extends ConsumerState<CalendarsView>
4141
ref
4242
.read(selectedDate.notifier)
4343
.addListener((state) => _selectedDateListener(state));
44-
_selectedCalendarTab = 0;
44+
_selectedCalendarTab = ref.read(calendarViewModel).getTabPreference();
4545
super.initState();
4646
}
4747

@@ -98,9 +98,14 @@ class _CalendarsViewState extends ConsumerState<CalendarsView>
9898
selected: {
9999
_selectedCalendarTab,
100100
},
101-
onSelectionChanged: (newSelection) => setState(() {
102-
_selectedCalendarTab = newSelection.first;
103-
}),
101+
onSelectionChanged: (newSelection) {
102+
setState(() {
103+
_selectedCalendarTab = newSelection.first;
104+
});
105+
ref.read(calendarViewModel).saveTabPreference(
106+
_selectedCalendarTab,
107+
);
108+
},
104109
),
105110
),
106111
],

lib/homeComponent/viewmodel/departures_viewmodel.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'package:campus_flutter/homeComponent/model/mvv_response.dart';
1111
import 'package:campus_flutter/homeComponent/model/station.dart';
1212
import 'package:campus_flutter/homeComponent/service/departures_service.dart';
1313
import 'package:campus_flutter/main.dart';
14-
import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart';
14+
import 'package:campus_flutter/base/services/user_preferences_service.dart';
1515
import 'package:easy_localization/easy_localization.dart';
1616
import 'package:flutter_riverpod/flutter_riverpod.dart';
1717
import 'package:geolocator/geolocator.dart';

lib/homeComponent/viewmodel/home_viewmodel.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'package:campus_flutter/homeComponent/view/departure/departures_widget_vi
66
import 'package:campus_flutter/main.dart';
77
import 'package:campus_flutter/placesComponent/views/homeWidget/cafeteria_widget_view.dart';
88
import 'package:campus_flutter/placesComponent/views/homeWidget/study_room_widget_view.dart';
9-
import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart';
9+
import 'package:campus_flutter/base/services/user_preferences_service.dart';
1010
import 'package:easy_localization/easy_localization.dart';
1111
import 'package:flutter/material.dart';
1212
import 'package:flutter_riverpod/flutter_riverpod.dart';

lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import 'package:campus_flutter/calendarComponent/services/calendar_view_service.
1616
import 'package:campus_flutter/onboardingComponent/services/onboarding_service.dart';
1717
import 'package:campus_flutter/navigation_service.dart';
1818
import 'package:campus_flutter/placesComponent/services/map_theme_service.dart';
19-
import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart';
19+
import 'package:campus_flutter/base/services/user_preferences_service.dart';
2020
import 'package:easy_localization/easy_localization.dart';
2121
import 'package:easy_logger/easy_logger.dart';
2222
import 'package:firebase_remote_config/firebase_remote_config.dart';

lib/onboardingComponent/viewModels/onboarding_viewmodel.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import 'package:campus_flutter/onboardingComponent/services/onboarding_service.d
1212
import 'package:campus_flutter/main.dart';
1313
import 'package:campus_flutter/personComponent/viewModel/person_details_viewmodel.dart';
1414
import 'package:campus_flutter/personComponent/viewModel/profile_viewmodel.dart';
15-
import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart';
16-
import 'package:campus_flutter/settingsComponent/viewModels/user_preferences_viewmodel.dart';
15+
import 'package:campus_flutter/base/services/user_preferences_service.dart';
16+
import 'package:campus_flutter/settingsComponent/viewModels/settings_viewmodel.dart';
1717
import 'package:campus_flutter/studentCardComponent/viewModel/student_card_viewmodel.dart';
1818
import 'package:easy_localization/easy_localization.dart';
1919
import 'package:flutter/material.dart';
@@ -147,7 +147,7 @@ class OnboardingViewModel {
147147
Future resetPreferences(WidgetRef ref) async {
148148
getIt<UserPreferencesService>().resetAll();
149149
getIt<CalendarPreferenceService>().resetPreferences();
150-
ref.read(userPreferencesViewModel).loadPreferences();
150+
ref.read(settingsViewModel).loadPreferences();
151151
ref.read(calendarViewModel).resetPreferences();
152152
}
153153

lib/placesComponent/viewModels/cafeterias_viewmodel.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import 'package:campus_flutter/placesComponent/model/cafeterias/dish.dart';
99
import 'package:campus_flutter/placesComponent/model/cafeterias/mensa_menu.dart';
1010
import 'package:campus_flutter/placesComponent/services/cafeterias_service.dart';
1111
import 'package:campus_flutter/placesComponent/services/mealplan_service.dart';
12-
import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart';
12+
import 'package:campus_flutter/base/services/user_preferences_service.dart';
1313
import 'package:collection/collection.dart';
1414
import 'package:easy_localization/easy_localization.dart';
1515
import 'package:flutter/material.dart';

lib/placesComponent/viewModels/study_rooms_viewmodel.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'package:campus_flutter/placesComponent/model/studyRooms/study_room.dart'
77
import 'package:campus_flutter/placesComponent/model/studyRooms/study_room_data.dart';
88
import 'package:campus_flutter/placesComponent/model/studyRooms/study_room_group.dart';
99
import 'package:campus_flutter/placesComponent/services/study_rooms_service.dart';
10-
import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart';
10+
import 'package:campus_flutter/base/services/user_preferences_service.dart';
1111
import 'package:easy_localization/easy_localization.dart';
1212
import 'package:flutter/material.dart';
1313
import 'package:collection/collection.dart';

lib/settingsComponent/viewModels/user_preferences_viewmodel.dart renamed to lib/settingsComponent/viewModels/settings_viewmodel.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ import 'package:campus_flutter/base/enums/user_preference.dart';
33
import 'package:campus_flutter/base/extensions/context.dart';
44
import 'package:campus_flutter/base/util/icon_text.dart';
55
import 'package:campus_flutter/main.dart';
6-
import 'package:campus_flutter/settingsComponent/service/user_preferences_service.dart';
6+
import 'package:campus_flutter/base/services/user_preferences_service.dart';
77
import 'package:campus_flutter/settingsComponent/views/settings_view.dart';
88
import 'package:flutter/material.dart';
99
import 'package:flutter_riverpod/flutter_riverpod.dart';
1010

11-
final userPreferencesViewModel = Provider(
12-
(ref) => UserPreferencesViewModel(ref),
11+
final settingsViewModel = Provider(
12+
(ref) => SettingsViewModel(ref),
1313
);
1414

15-
class UserPreferencesViewModel {
15+
class SettingsViewModel {
1616
final Ref ref;
1717

18-
UserPreferencesViewModel(this.ref);
18+
SettingsViewModel(this.ref);
1919

2020
Future<void> loadPreferences() async {
2121
return Future(() async {

lib/settingsComponent/views/appearance_settings_view.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import 'package:campus_flutter/base/util/seperated_list.dart';
44
import 'package:campus_flutter/studiesComponent/viewModel/grade_viewmodel.dart';
55
import 'package:campus_flutter/homeComponent/view/widget/widget_frame_view.dart';
66
import 'package:campus_flutter/main.dart';
7-
import 'package:campus_flutter/settingsComponent/viewModels/user_preferences_viewmodel.dart';
7+
import 'package:campus_flutter/settingsComponent/viewModels/settings_viewmodel.dart';
88
import 'package:campus_flutter/settingsComponent/views/settings_view.dart';
99
import 'package:easy_localization/easy_localization.dart';
1010
import 'package:flutter/material.dart';
@@ -39,14 +39,14 @@ class AppearanceSettingsView extends ConsumerWidget {
3939
trailing: DropdownButton(
4040
onChanged: (Appearance? newAppearance) {
4141
if (newAppearance != null) {
42-
ref.read(userPreferencesViewModel).savePreference(
42+
ref.read(settingsViewModel).savePreference(
4343
UserPreference.theme,
4444
newAppearance,
4545
);
4646
}
4747
},
4848
value: ref.watch(appearance),
49-
items: UserPreferencesViewModel.getAppearanceEntries(context),
49+
items: SettingsViewModel.getAppearanceEntries(context),
5050
),
5151
);
5252
}
@@ -61,7 +61,7 @@ class AppearanceSettingsView extends ConsumerWidget {
6161
trailing: Switch(
6262
value: ref.watch(useWebView),
6363
onChanged: (showWebView) {
64-
ref.read(userPreferencesViewModel).savePreference(
64+
ref.read(settingsViewModel).savePreference(
6565
UserPreference.browser,
6666
showWebView,
6767
);
@@ -81,7 +81,7 @@ class AppearanceSettingsView extends ConsumerWidget {
8181
trailing: Switch(
8282
value: ref.watch(hideFailedGrades),
8383
onChanged: (value) {
84-
ref.read(userPreferencesViewModel).savePreference(
84+
ref.read(settingsViewModel).savePreference(
8585
UserPreference.failedGrades,
8686
value,
8787
);

lib/settingsComponent/views/calendar_settings_view.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import 'package:campus_flutter/base/util/seperated_list.dart';
33
import 'package:campus_flutter/calendarComponent/viewModels/calendar_viewmodel.dart';
44
import 'package:campus_flutter/calendarComponent/views/calendars_view.dart';
55
import 'package:campus_flutter/homeComponent/view/widget/widget_frame_view.dart';
6-
import 'package:campus_flutter/settingsComponent/viewModels/user_preferences_viewmodel.dart';
6+
import 'package:campus_flutter/settingsComponent/viewModels/settings_viewmodel.dart';
77
import 'package:campus_flutter/settingsComponent/views/settings_view.dart';
88
import 'package:easy_localization/easy_localization.dart';
99
import 'package:flutter/material.dart';
@@ -38,7 +38,7 @@ class CalendarSettingsView extends ConsumerWidget {
3838
trailing: Switch(
3939
value: ref.watch(showWeekends),
4040
onChanged: (value) {
41-
ref.read(userPreferencesViewModel).savePreference(
41+
ref.read(settingsViewModel).savePreference(
4242
UserPreference.weekends,
4343
value,
4444
);
@@ -59,7 +59,7 @@ class CalendarSettingsView extends ConsumerWidget {
5959
trailing: Switch(
6060
value: ref.watch(showHiddenCalendarEntries),
6161
onChanged: (value) {
62-
ref.read(userPreferencesViewModel).savePreference(
62+
ref.read(settingsViewModel).savePreference(
6363
UserPreference.hiddenCalendarEntries,
6464
value,
6565
);

0 commit comments

Comments
 (0)