Move onBoardingCompleted from AppState to Settings

I want to get rid of the AppState entirely. It serves exactly the same
purpose as Settings.
This commit is contained in:
Vishesh Handa
2020-08-16 15:29:49 +02:00
parent 1e0fdb9f06
commit 4bcbf8226a
5 changed files with 16 additions and 17 deletions

View File

@ -289,7 +289,7 @@ class _JournalAppState extends State<JournalApp> {
var settings = Provider.of<Settings>(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<JournalApp> {
stateContainer.completeGitHostSetup,
);
case '/onBoarding':
return OnBoardingScreen(stateContainer.completeOnBoarding);
return OnBoardingScreen();
case '/purchase':
return PurchaseScreen();
case '/purchase_thank_you':

View File

@ -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);
}
}

View File

@ -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<void> onCompletedFunction;
OnBoardingScreen(this.onCompletedFunction);
OnBoardingScreen();
@override
OnBoardingScreenState createState() {
@ -109,7 +110,9 @@ class OnBoardingScreenState extends State<OnBoardingScreen> {
}
void _finish() {
widget.onCompletedFunction();
var settings = Provider.of<Settings>(context);
settings.onBoardingCompleted = true;
settings.save();
Navigator.pop(context);
Navigator.pushNamed(context, "/");

View File

@ -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<String, String> toMap() {
return <String, String>{
"onBoardingCompleted": onBoardingCompleted.toString(),
"gitAuthor": gitAuthor,
"gitAuthorEmail": gitAuthorEmail,
"noteFileNameFormat": noteFileNameFormat.toInternalString(),

View File

@ -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);