import 'package:animated_splash_screen/animated_splash_screen.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_storage/firebase_storage.dart'; import 'package:flutter/material.dart'; import 'package:flutter_application_1/Project/Admin/HomeAdmin.dart'; import 'package:flutter_application_1/Project/LoginPage/login_project.dart'; import 'dart:async'; import 'NavigationBar.dart'; final navigatorKey = GlobalKey(); const Color cColor = Color.fromARGB(255, 93, 176, 116); Future main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp( MaterialApp( navigatorKey: navigatorKey, home: const Splash(), debugShowCheckedModeBanner: false, ), ); } class Splash extends StatelessWidget { const Splash({super.key}); @override Widget build(BuildContext context) { return AnimatedSplashScreen( splash: Column( children: [ const Spacer(), FutureBuilder( future: FirebaseStorage.instance .ref('admin_images/mfu-logo.png') .getDownloadURL(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasError) { return const Icon( Icons.error_outline, size: 50, ); } else if (snapshot.connectionState == ConnectionState.done) { if (snapshot.data.toString() != null) { return Image.network( snapshot.data!, height: 200, width: 180, fit: BoxFit.fitWidth, ); } else { return const Icon( Icons.error_outline, size: 50, ); } } else { return const CircularProgressIndicator(); } }, ), const SizedBox( height: 20, ), const Text( 'Asset borrowing Application', style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, color: Colors.white), ), const Spacer(), ], ), backgroundColor: cColor, nextScreen: StreamBuilder( stream: FirebaseAuth.instance.authStateChanges(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); } else if (snapshot.hasData) { User? user = FirebaseAuth.instance.currentUser; FirebaseFirestore.instance .collection('users') .doc(user?.uid) .get() .then((doc) { if (doc.exists) { Map data = doc.data()!; String role = data['role']!; if (role == 'user') { navigatorKey.currentState?.pushReplacement( MaterialPageRoute( builder: (context) => const MyBottomNavigationBar(getIndex: 0)), ); } else if (role == 'admin') { navigatorKey.currentState?.pushReplacement( MaterialPageRoute(builder: (context) => const HomeAdmin()), ); } } }); return const Center(child: CircularProgressIndicator()); } else if (snapshot.hasError) { return const Center( child: Text('Something Went Wrong!'), ); } else { return const LoginProject(); } }, ), splashIconSize: 250, ); } }