mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-15 07:56:11 +08:00

This required refactoring the code. With this we can now write an integration test to test the main parts of the app, but more importantly we can automate the process of generating the screenshots.
107 lines
3.5 KiB
Dart
107 lines
3.5 KiB
Dart
import 'package:firebase_analytics/firebase_analytics.dart';
|
|
import 'package:firebase_analytics/observer.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:journal/apis/git.dart';
|
|
import 'package:journal/screens/home_screen.dart';
|
|
import 'package:journal/screens/settings_screen.dart';
|
|
import 'package:journal/settings.dart';
|
|
import 'package:journal/state_container.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import 'screens/githostsetup_screens.dart';
|
|
import 'screens/onboarding_screens.dart';
|
|
|
|
class JournalApp extends StatelessWidget {
|
|
static Future main() async {
|
|
var pref = await SharedPreferences.getInstance();
|
|
JournalApp.preferences = pref;
|
|
|
|
var localGitRepoConfigured =
|
|
pref.getBool("localGitRepoConfigured") ?? false;
|
|
var remoteGitRepoConfigured =
|
|
pref.getBool("remoteGitRepoConfigured") ?? false;
|
|
var localGitRepoPath = pref.getString("localGitRepoPath") ?? "";
|
|
var remoteGitRepoFolderName = pref.getString("remoteGitRepoPath") ?? "";
|
|
var remoteGitRepoSubFolder = pref.getString("remoteGitRepoSubFolder") ?? "";
|
|
var onBoardingCompleted =
|
|
true; //pref.getBool("onBoardingCompleted") ?? false;
|
|
|
|
if (JournalApp.isInDebugMode) {
|
|
if (JournalApp.analytics.android != null) {
|
|
JournalApp.analytics.android.setAnalyticsCollectionEnabled(false);
|
|
}
|
|
}
|
|
|
|
if (localGitRepoConfigured == false) {
|
|
// FIXME: What about exceptions!
|
|
localGitRepoPath = "journal_local";
|
|
await gitInit(localGitRepoPath);
|
|
|
|
localGitRepoConfigured = true;
|
|
|
|
await pref.setBool("localGitRepoConfigured", localGitRepoConfigured);
|
|
await pref.setString("localGitRepoPath", localGitRepoPath);
|
|
}
|
|
|
|
var dir = await getGitBaseDirectory();
|
|
|
|
await Settings.instance.load();
|
|
|
|
runApp(StateContainer(
|
|
localGitRepoConfigured: localGitRepoConfigured,
|
|
remoteGitRepoConfigured: remoteGitRepoConfigured,
|
|
localGitRepoPath: localGitRepoPath,
|
|
remoteGitRepoFolderName: remoteGitRepoFolderName,
|
|
remoteGitRepoSubFolder: remoteGitRepoSubFolder,
|
|
gitBaseDirectory: dir.path,
|
|
onBoardingCompleted: onBoardingCompleted,
|
|
child: JournalApp(),
|
|
));
|
|
}
|
|
|
|
static FirebaseAnalytics analytics = FirebaseAnalytics();
|
|
static FirebaseAnalyticsObserver observer =
|
|
FirebaseAnalyticsObserver(analytics: analytics);
|
|
|
|
static bool get isInDebugMode {
|
|
bool inDebugMode = false;
|
|
assert(inDebugMode = true);
|
|
return inDebugMode;
|
|
}
|
|
|
|
static SharedPreferences preferences;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
var stateContainer = StateContainer.of(context);
|
|
|
|
var initialRoute = '/';
|
|
if (!stateContainer.appState.onBoardingCompleted) {
|
|
initialRoute = '/onBoarding';
|
|
}
|
|
|
|
return MaterialApp(
|
|
title: 'GitJournal',
|
|
theme: ThemeData(
|
|
brightness: Brightness.light,
|
|
primaryColor: Color(0xFF66bb6a),
|
|
primaryColorLight: Color(0xFF98ee99),
|
|
primaryColorDark: Color(0xFF338a3e),
|
|
accentColor: Color(0xff6d4c41),
|
|
),
|
|
navigatorObservers: <NavigatorObserver>[JournalApp.observer],
|
|
initialRoute: initialRoute,
|
|
routes: {
|
|
'/': (context) => HomeScreen(),
|
|
'/settings': (context) => SettingsScreen(),
|
|
'/setupRemoteGit': (context) =>
|
|
GitHostSetupScreen(stateContainer.completeGitHostSetup),
|
|
'/onBoarding': (context) =>
|
|
OnBoardingScreen(stateContainer.completeOnBoarding),
|
|
},
|
|
debugShowCheckedModeBanner: false,
|
|
//debugShowMaterialGrid: true,
|
|
);
|
|
}
|
|
}
|