import 'package:app_usage/app_usage.dart'; import 'package:flutter/material.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:tasktracker/Data.dart'; import 'DebugHelper.dart'; import 'User.dart' as Users; import 'package:http/http.dart' as http; import 'theme_provider.dart'; import 'package:provider/provider.dart'; import 'newActivity.dart'; import 'NotificationsManager.dart'; class SplashScreen extends StatefulWidget { const SplashScreen({Key? key}) : super(key: key); @override _SplashScreenState createState() => _SplashScreenState(); } class _SplashScreenState extends State { Future initSettings() async { final prefs = await SharedPreferences.getInstance(); bool value = true; if (prefs.containsKey("theme")) { value = ((await prefs.getInt("theme")) == 0); } else { await prefs.setInt("theme", 0); } print('Dark theme is : $value'); final provider = Provider.of(context, listen: false); provider.toggleTheme(value); } @override void initState() { // TODO: implement initState super.initState(); init(); NotificationManager.RescheduleNotifications(); } void notificationSelected(String? payload) { if (payload != null) { if (payload.toLowerCase().contains("activity")) { Navigator.of(context) .push(MaterialPageRoute(builder: (context) => NewActivity())) .then((value) => {Users.refreshUserData()}); } } } void init() async { await initSettings(); final prefs = await SharedPreferences.getInstance(); // http.Response loginResponse = await Users.login('Test1', 'password'); // print(loginResponse.body); if (!prefs.containsKey("password") || !prefs.containsKey("username")) { Navigator.of(context) .pushNamedAndRemoveUntil('/welcome', (route) => false); } else { try { http.Response loginResponse = await Users.login( prefs.getString("username") ?? '', prefs.getString("password") ?? ''); print(loginResponse.body); if (loginResponse.body.toLowerCase().contains("success")) { //Login Success Continue(); } else { //Login Failed LoginFailed(); } } catch (error) { //Login Failed LoginFailed(); } } } void LoginFailed() async { bool dbExist = await Users.cacheDbExist(); if (dbExist) { print('cache Database exists, Lets go CACHE!'); Continue(); } else { Navigator.of(context).pushReplacementNamed('/welcome'); } } void Continue() async { await Users.initUserData(); Navigator.of(context).pushReplacementNamed('/home'); print('Going home!'); } @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( gradient: LinearGradient( colors: [Colors.lightBlue, Colors.blue], stops: [0, 1], begin: Alignment.topLeft, end: Alignment.bottomRight)), // color: Colors.redAccent, padding: EdgeInsets.all(80), child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container(), Column( children: [ Image(image: AssetImage('images/logo.png')), SpinKitPouringHourGlass(color: Colors.white), ], ), DefaultTextStyle( style: TextStyle( fontSize: 15, color: Colors.white, fontStyle: FontStyle.italic), child: Text( 'If you lie to me, That means you lie to yourself\n\n -This app (2022)', )) // Text('Loading', style:TextStyle(color: Colors.grey, fontSize: 20,fontStyle: FontStyle.italic)) ])); } }