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<NavigatorState>();
const Color cColor = Color.fromARGB(255, 93, 176, 116);
Future<void> 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<String> 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<String, dynamic> 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,
);
}
}