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';
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(),
);
}
),
......
......@@ -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,
......
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';
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');
......
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