diff --git a/lib/app.dart b/lib/app.dart index f47e2d6f..26d93769 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -289,7 +289,7 @@ class _JournalAppState extends State { var settings = Provider.of(context); var initialRoute = '/'; - if (!stateContainer.appState.onBoardingCompleted) { + if (!settings.onBoardingCompleted) { initialRoute = '/onBoarding'; } if (settings.homeScreen == SettingsHomeScreen.AllFolders) { @@ -354,7 +354,7 @@ class _JournalAppState extends State { stateContainer.completeGitHostSetup, ); case '/onBoarding': - return OnBoardingScreen(stateContainer.completeOnBoarding); + return OnBoardingScreen(); case '/purchase': return PurchaseScreen(); case '/purchase_thank_you': diff --git a/lib/appstate.dart b/lib/appstate.dart index 228c5499..078f7281 100644 --- a/lib/appstate.dart +++ b/lib/appstate.dart @@ -22,8 +22,6 @@ class AppState { String remoteGitRepoFolderName = ""; bool remoteGitRepoConfigured = false; - bool onBoardingCompleted = false; - SyncStatus syncStatus = SyncStatus.Unknown; int numChanges = 0; @@ -44,7 +42,6 @@ class AppState { remoteGitRepoConfigured = pref.getBool("remoteGitRepoConfigured") ?? false; localGitRepoFolderName = pref.getString("localGitRepoPath") ?? ""; remoteGitRepoFolderName = pref.getString("remoteGitRepoPath") ?? ""; - onBoardingCompleted = pref.getBool("onBoardingCompleted") ?? false; gitBaseDirectory = pref.getString("gitBaseDirectory") ?? ""; } @@ -54,7 +51,6 @@ class AppState { Log.i("remoteGitRepoConfigured: $remoteGitRepoConfigured"); Log.i("localGitRepoFolderName: $localGitRepoFolderName"); Log.i("remoteGitRepoFolderName: $remoteGitRepoFolderName"); - Log.i("onBoardingCompleted: $onBoardingCompleted"); Log.i("gitBaseDirectory: $gitBaseDirectory"); Log.i(" ------------------ "); } @@ -64,7 +60,6 @@ class AppState { await pref.setBool("remoteGitRepoConfigured", remoteGitRepoConfigured); await pref.setString("localGitRepoPath", localGitRepoFolderName); await pref.setString("remoteGitRepoPath", remoteGitRepoFolderName); - await pref.setBool("onBoardingCompleted", onBoardingCompleted); await pref.setString("gitBaseDirectory", gitBaseDirectory); } } diff --git a/lib/screens/onboarding_screens.dart b/lib/screens/onboarding_screens.dart index 8429f70b..84caed2d 100644 --- a/lib/screens/onboarding_screens.dart +++ b/lib/screens/onboarding_screens.dart @@ -3,11 +3,12 @@ import 'package:flutter/material.dart'; import 'package:auto_size_text/auto_size_text.dart'; import 'package:dots_indicator/dots_indicator.dart'; import 'package:function_types/function_types.dart'; +import 'package:provider/provider.dart'; + +import 'package:gitjournal/settings.dart'; class OnBoardingScreen extends StatefulWidget { - final Func0 onCompletedFunction; - - OnBoardingScreen(this.onCompletedFunction); + OnBoardingScreen(); @override OnBoardingScreenState createState() { @@ -109,7 +110,9 @@ class OnBoardingScreenState extends State { } void _finish() { - widget.onCompletedFunction(); + var settings = Provider.of(context); + settings.onBoardingCompleted = true; + settings.save(); Navigator.pop(context); Navigator.pushNamed(context, "/"); diff --git a/lib/settings.dart b/lib/settings.dart index 97369eb8..aa4cc07d 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -16,6 +16,8 @@ class Settings extends ChangeNotifier { static Settings get instance => _singleton; // Properties + bool onBoardingCompleted = false; + String gitAuthor = "GitJournal"; String gitAuthorEmail = "app@gitjournal.io"; NoteFileNameFormat noteFileNameFormat = NoteFileNameFormat.Default; @@ -64,6 +66,8 @@ class Settings extends ChangeNotifier { bool saveTitleInH1 = true; void load(SharedPreferences pref) { + onBoardingCompleted = pref.getBool("onBoardingCompleted") ?? false; + gitAuthor = pref.getString("gitAuthor") ?? gitAuthor; gitAuthorEmail = pref.getString("gitAuthorEmail") ?? gitAuthorEmail; @@ -142,6 +146,8 @@ class Settings extends ChangeNotifier { var pref = await SharedPreferences.getInstance(); var defaultSet = Settings._internal(); + await pref.setBool("onBoardingCompleted", onBoardingCompleted); + _setString(pref, "gitAuthor", gitAuthor, defaultSet.gitAuthor); _setString( pref, "gitAuthorEmail", gitAuthorEmail, defaultSet.gitAuthorEmail); @@ -244,6 +250,7 @@ class Settings extends ChangeNotifier { Map toMap() { return { + "onBoardingCompleted": onBoardingCompleted.toString(), "gitAuthor": gitAuthor, "gitAuthorEmail": gitAuthorEmail, "noteFileNameFormat": noteFileNameFormat.toInternalString(), diff --git a/lib/state_container.dart b/lib/state_container.dart index 21dd0b50..5562348f 100644 --- a/lib/state_container.dart +++ b/lib/state_container.dart @@ -375,12 +375,6 @@ class StateContainer with ChangeNotifier { }(); } - void completeOnBoarding() { - appState.onBoardingCompleted = true; - _persistConfig(); - notifyListeners(); - } - Future _persistConfig() async { var pref = await SharedPreferences.getInstance(); await appState.save(pref);