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/login_route.dart'; import 'package:comunic/ui/widgets/init_widget.dart'; import 'package:comunic/utils/intl_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(); // Check if the user is currently signed in await AccountHelper().signedIn(); runApp(ComunicApplication( preferences: await PreferencesHelper.getInstance(), )); } class ComunicApplication extends StatefulWidget { final PreferencesHelper preferences; const ComunicApplication({ Key key, @required this.preferences, }) : assert(preferences != null), super(key: key); @override ComunicApplicationState createState() => ComunicApplicationState(); } class ComunicApplicationState extends State { /// Use this method to force the application to rebuild void refresh() => setState(() {}); @override Widget build(BuildContext context) { final prefs = widget.preferences.preferences; return MaterialApp( debugShowCheckedModeBanner: false, home: AccountHelper.isUserIDLoaded ? InitializeWidget() : LoginRoute(), theme: prefs.enableDarkMode ? ThemeData.dark() : null, showPerformanceOverlay: prefs.showPerformancesOverlay, ); } }