import 'package:comunic/helpers/account_helper.dart'; import 'package:comunic/helpers/database/database_helper.dart'; import 'package:comunic/helpers/preferences_helper.dart'; import 'package:comunic/ui/routes/home_route.dart'; import 'package:comunic/ui/routes/login_route.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/ui_utils.dart'; import 'package:flutter/material.dart'; /// Main file of the application /// /// @author Pierre HUBERT void subMain() async { WidgetsFlutterBinding.ensureInitialized(); // Connect to database await DatabaseHelper.open(); await DatabaseHelper.cleanUpDatabase(); // Get current system language await initTranslations(); runApp(ComunicApplication( darkMode: (await PreferencesHelper.getInstance()) .getBool(PreferencesKeyList.ENABLE_DARK_THEME), )); } class ComunicApplication extends StatelessWidget { final bool darkMode; const ComunicApplication({Key key, @required this.darkMode}) : assert(darkMode != null), super(key: key); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: ComunicApplicationHome(), theme: darkMode ? ThemeData.dark() : ThemeData.light(), ); } } class ComunicApplicationHome extends StatefulWidget { @override State createState() => _ComunicApplicationHomeState(); } class _ComunicApplicationHomeState extends State { bool _signedIn; @override void initState() { super.initState(); AccountHelper().signedIn().then((v) { setState(() { _signedIn = v; }); }); } @override Widget build(BuildContext context) { if (_signedIn == null) return buildLoadingPage(); if (_signedIn) return HomeRoute(); else return LoginRoute(); } }