diff --git a/trackeroo/lib/app.dart b/trackeroo/lib/app.dart index 733fb9953d892d520e9c939a8cbb115dec7c0878..15880709b3ab3e06c14a3697ca4ba6cfdaf7dd39 100644 --- a/trackeroo/lib/app.dart +++ b/trackeroo/lib/app.dart @@ -2,13 +2,13 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:trackeroo/app_scaffold.dart'; import 'package:trackeroo/frontend/views/onboarding_view.dart'; -import 'package:trackeroo/logic/services/app_state.dart'; +import 'package:trackeroo/logic/services/app_state_controller.dart'; import 'package:trackeroo/logic/services/locator.dart'; class MyApp extends StatelessWidget { MyApp({super.key}); - final AppState appState = locator.get<AppState>(); + final AppStateController appStateController = locator.get<AppStateController>(); // This widget is the root of your application. @override @@ -45,7 +45,7 @@ class MyApp extends StatelessWidget { useMaterial3: true, // textTheme: GoogleFonts.rubikTextTheme(ThemeData.dark().textTheme) ), - home: appState.isFirstOpening ? const OnboardingView() : const AppScaffold(), + home: appStateController.appState.isFirstOpening ? const OnboardingView() : const AppScaffold(), ); } ), diff --git a/trackeroo/lib/frontend/views/onboarding_view.dart b/trackeroo/lib/frontend/views/onboarding_view.dart index 4ba8b61a581d15feeda8f729baf158cb74983c03..629224e4668aac0ad765d2768ae1049c61a2d5c1 100644 --- a/trackeroo/lib/frontend/views/onboarding_view.dart +++ b/trackeroo/lib/frontend/views/onboarding_view.dart @@ -5,6 +5,8 @@ import 'package:trackeroo/frontend/utils/onboarding/ob_details.dart'; import 'package:trackeroo/frontend/utils/onboarding/ob_home.dart'; import 'package:trackeroo/frontend/utils/onboarding/ob_welcome.dart'; import 'package:trackeroo/frontend/utils/onboarding/ob_trackeroo.dart'; +import 'package:trackeroo/logic/services/app_state_controller.dart'; +import 'package:trackeroo/logic/services/locator.dart'; class OnboardingView extends StatefulWidget { const OnboardingView({super.key}); @@ -15,6 +17,7 @@ class OnboardingView extends StatefulWidget { class _OnboardingViewState extends State<OnboardingView> { final controller = PageController(); + final AppStateController appStateController = locator.get<AppStateController>(); int pageIndex = 0; @@ -48,6 +51,8 @@ class _OnboardingViewState extends State<OnboardingView> { children: [ IconButton( onPressed: () { + appStateController.appState.isFirstOpening = false; + appStateController.safeAppState(); Navigator.of(context).popUntil((route) => route.isFirst); Navigator.pushReplacement( context, @@ -80,6 +85,8 @@ class _OnboardingViewState extends State<OnboardingView> { IconButton( onPressed: () { if(pageIndex == 4) { + appStateController.appState.isFirstOpening = false; + appStateController.safeAppState(); Navigator.of(context).popUntil((route) => route.isFirst); Navigator.pushReplacement( context, diff --git a/trackeroo/lib/logic/services/app_state.dart b/trackeroo/lib/logic/models/app_state.dart similarity index 100% rename from trackeroo/lib/logic/services/app_state.dart rename to trackeroo/lib/logic/models/app_state.dart diff --git a/trackeroo/lib/logic/services/app_state_controller.dart b/trackeroo/lib/logic/services/app_state_controller.dart new file mode 100644 index 0000000000000000000000000000000000000000..fe6ba8ef45db9a2643b17c4d69241dd01c2ae5db --- /dev/null +++ b/trackeroo/lib/logic/services/app_state_controller.dart @@ -0,0 +1,13 @@ +import 'package:hive/hive.dart'; +import 'package:trackeroo/logic/models/app_state.dart'; + +class AppStateController { + AppStateController({required this.appStateBox, required this.appState}); + + Box<dynamic> appStateBox; + AppState appState; + + void safeAppState() { + appStateBox.put('is_first_opening', appState.isFirstOpening); + } +} diff --git a/trackeroo/lib/logic/services/locator.dart b/trackeroo/lib/logic/services/locator.dart index bcc04d58dc7eafbf6794905b53d826d9a4e1d91a..d39aa6d41b85e562601183e5fcb7d5e0535b0762 100644 --- a/trackeroo/lib/logic/services/locator.dart +++ b/trackeroo/lib/logic/services/locator.dart @@ -4,7 +4,8 @@ import 'package:hive/hive.dart'; import 'package:get_it/get_it.dart'; import 'package:trackeroo/logic/models/category.dart'; -import 'package:trackeroo/logic/services/app_state.dart'; +import 'package:trackeroo/logic/models/app_state.dart'; +import 'package:trackeroo/logic/services/app_state_controller.dart'; import 'package:trackeroo/logic/services/categories_controller.dart'; final locator = GetIt.instance; @@ -14,9 +15,10 @@ Future<void> setupLocatorService() async { var appStateBox = await Hive.openBox('app_state_box'); Map<dynamic, dynamic> appStateMap = appStateBox.toMap(); AppState appState = AppState( - isFirstOpening: appStateMap['isFirstOpening'] ?? true + isFirstOpening: appStateMap['is_first_opening'] ?? true ); - locator.registerLazySingleton<AppState>(() => appState); + AppStateController appStateController = AppStateController(appStateBox: appStateBox, appState: appState); + locator.registerLazySingleton<AppStateController>(() => appStateController); // load categories from box and safe to list, make list available in get_it var categoriesBox = await Hive.openBox('categories_box');