myhomie_app/lib/main.dart

84 lines
2.6 KiB
Dart

import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:myhomie_app/Helpers/PushNotificationService.dart';
import 'package:myhomie_app/client.dart';
import 'package:provider/provider.dart';
import 'Helpers/DatabaseHelper.dart';
import 'Models/homieContext.dart';
import 'Screens/Main/MainPage.dart';
import 'Screens/Login/login_screen.dart';
import 'app_context.dart';
import 'constants.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
String initialRoute;
HomieAppContext? localContext = new HomieAppContext();
bool isLogged = false;
localContext = await DatabaseHelper.instance.getData();
if(localContext != null) {
print("we've got an local db !");
localContext.clientAPI = new Client(localContext.host!); // TODO "http://192.168.31.140"
//isLogged = localContext.token != null; // TODO refresh token..
isLogged = false;
print(localContext);
} else {
print("NO LOCAL DB !");
localContext = HomieAppContext();
}
initialRoute = isLogged ? '/home' : '/login';
final MyApp myApp = MyApp(
initialRoute: initialRoute,
homieAppContext: localContext!,
);
runApp(myApp);
}
class MyApp extends StatefulWidget {
String initialRoute = "";
HomieAppContext homieAppContext;
MyApp({Key? key, required this.initialRoute, required this.homieAppContext}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
//FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
//HomieAppContext homieAppContext;
@override
Widget build(BuildContext context) {
final pushNotificationService = PushNotificationService();
pushNotificationService.initialise(widget.homieAppContext, context: context);
return ChangeNotifierProvider<AppContext>(
create: (_) => AppContext(widget.homieAppContext),
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'MyHomie App Demo',
initialRoute: widget.initialRoute,
/*supportedLocales: [
const Locale('en', 'US'),
//const Locale('fr', 'FR'),
],*/
theme: ThemeData(
primarySwatch: Colors.blue,
scaffoldBackgroundColor: kBackgroundColor,
//fontFamily: "Vollkorn",
textTheme: TextTheme(bodyText1: TextStyle(color: kBodyTextColor)),
visualDensity: VisualDensity.adaptivePlatformDensity,
),
routes: {
'/home': (context) => MainPage(),
'/login': (context) => LoginScreen()
}
),
);
}
}