Skip to content
Snippets Groups Projects
Commit 1dcc7686 authored by Florian Schindler's avatar Florian Schindler
Browse files

bug fix onboarding

fixed a bug where the onboarding would also be displayed on the second visit
parent 1471056d
No related branches found
No related tags found
No related merge requests found
...@@ -2,13 +2,13 @@ import 'package:flutter/material.dart'; ...@@ -2,13 +2,13 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:trackeroo/app_scaffold.dart'; import 'package:trackeroo/app_scaffold.dart';
import 'package:trackeroo/frontend/views/onboarding_view.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'; import 'package:trackeroo/logic/services/locator.dart';
class MyApp extends StatelessWidget { class MyApp extends StatelessWidget {
MyApp({super.key}); MyApp({super.key});
final AppState appState = locator.get<AppState>(); final AppStateController appStateController = locator.get<AppStateController>();
// This widget is the root of your application. // This widget is the root of your application.
@override @override
...@@ -45,7 +45,7 @@ class MyApp extends StatelessWidget { ...@@ -45,7 +45,7 @@ class MyApp extends StatelessWidget {
useMaterial3: true, useMaterial3: true,
// textTheme: GoogleFonts.rubikTextTheme(ThemeData.dark().textTheme) // textTheme: GoogleFonts.rubikTextTheme(ThemeData.dark().textTheme)
), ),
home: appState.isFirstOpening ? const OnboardingView() : const AppScaffold(), home: appStateController.appState.isFirstOpening ? const OnboardingView() : const AppScaffold(),
); );
} }
), ),
......
...@@ -5,6 +5,8 @@ import 'package:trackeroo/frontend/utils/onboarding/ob_details.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_home.dart';
import 'package:trackeroo/frontend/utils/onboarding/ob_welcome.dart'; import 'package:trackeroo/frontend/utils/onboarding/ob_welcome.dart';
import 'package:trackeroo/frontend/utils/onboarding/ob_trackeroo.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 { class OnboardingView extends StatefulWidget {
const OnboardingView({super.key}); const OnboardingView({super.key});
...@@ -15,6 +17,7 @@ class OnboardingView extends StatefulWidget { ...@@ -15,6 +17,7 @@ class OnboardingView extends StatefulWidget {
class _OnboardingViewState extends State<OnboardingView> { class _OnboardingViewState extends State<OnboardingView> {
final controller = PageController(); final controller = PageController();
final AppStateController appStateController = locator.get<AppStateController>();
int pageIndex = 0; int pageIndex = 0;
...@@ -48,6 +51,8 @@ class _OnboardingViewState extends State<OnboardingView> { ...@@ -48,6 +51,8 @@ class _OnboardingViewState extends State<OnboardingView> {
children: [ children: [
IconButton( IconButton(
onPressed: () { onPressed: () {
appStateController.appState.isFirstOpening = false;
appStateController.safeAppState();
Navigator.of(context).popUntil((route) => route.isFirst); Navigator.of(context).popUntil((route) => route.isFirst);
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
...@@ -80,6 +85,8 @@ class _OnboardingViewState extends State<OnboardingView> { ...@@ -80,6 +85,8 @@ class _OnboardingViewState extends State<OnboardingView> {
IconButton( IconButton(
onPressed: () { onPressed: () {
if(pageIndex == 4) { if(pageIndex == 4) {
appStateController.appState.isFirstOpening = false;
appStateController.safeAppState();
Navigator.of(context).popUntil((route) => route.isFirst); Navigator.of(context).popUntil((route) => route.isFirst);
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
......
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);
}
}
...@@ -4,7 +4,8 @@ import 'package:hive/hive.dart'; ...@@ -4,7 +4,8 @@ import 'package:hive/hive.dart';
import 'package:get_it/get_it.dart'; import 'package:get_it/get_it.dart';
import 'package:trackeroo/logic/models/category.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'; import 'package:trackeroo/logic/services/categories_controller.dart';
final locator = GetIt.instance; final locator = GetIt.instance;
...@@ -14,9 +15,10 @@ Future<void> setupLocatorService() async { ...@@ -14,9 +15,10 @@ Future<void> setupLocatorService() async {
var appStateBox = await Hive.openBox('app_state_box'); var appStateBox = await Hive.openBox('app_state_box');
Map<dynamic, dynamic> appStateMap = appStateBox.toMap(); Map<dynamic, dynamic> appStateMap = appStateBox.toMap();
AppState appState = AppState( 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 // load categories from box and safe to list, make list available in get_it
var categoriesBox = await Hive.openBox('categories_box'); var categoriesBox = await Hive.openBox('categories_box');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment