import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.dart'; import 'package:monitoringlistrik/authadmin.dart'; import 'package:monitoringlistrik/pengguna.dart'; class LoginScreen extends StatefulWidget { @override _LoginScreenState createState() => _LoginScreenState(); } class _LoginScreenState extends State { final TextEditingController _tokenController = TextEditingController(); final FirebaseFirestore _firestore = FirebaseFirestore.instance; bool isLoading = true; List> collectionData = []; @override void initState() { super.initState(); } Future fetchData() async { setState(() { isLoading = true; }); try { QuerySnapshot querySnapshot = await _firestore .collection('room') .where('token', isEqualTo: _tokenController.text) // Filter berdasarkan token .get(); if (querySnapshot.docs.isNotEmpty) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Berhasil Masuk'), backgroundColor: Colors.green, ), ); _handleUserLogin(); } else { // Tidak ada data yang ditemukan ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Data tidak ditemukan'), backgroundColor: Colors.red, ), ); } } catch (e) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Failed to fetch data: $e'), backgroundColor: Colors.red, ), ); } finally { setState(() { isLoading = false; }); } } @override void dispose() { _tokenController.dispose(); super.dispose(); } void _handleAdminLogin() { Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => AdminScreen()), ); } void _handleUserLogin() { Navigator.pushReplacement( context, MaterialPageRoute( builder: (context) => PenggunaScreen( token: _tokenController.text, )), ); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.blue, body: Center( child: Padding( padding: EdgeInsets.symmetric(horizontal: 60), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.person, size: 100.0, color: Colors.white, ), SizedBox(height: 40.0), Container( padding: EdgeInsets.all(20.0), decoration: BoxDecoration( color: Colors.grey[200], borderRadius: BorderRadius.circular(16.0), ), child: Column( children: [ ElevatedButton.icon( onPressed: _handleAdminLogin, icon: Icon(Icons.admin_panel_settings), label: Text('Admin Kost'), style: ElevatedButton.styleFrom( primary: Colors.grey[800], onPrimary: Colors.white, minimumSize: Size(double.infinity, 50), ), ), SizedBox(height: 16.0), ElevatedButton.icon( onPressed: fetchData, icon: Icon(Icons.person), label: Text('Pengguna Kost'), style: ElevatedButton.styleFrom( primary: Colors.grey[800], onPrimary: Colors.white, minimumSize: Size(double.infinity, 50), ), ), SizedBox(height: 16.0), TextField( controller: _tokenController, decoration: InputDecoration( border: OutlineInputBorder(), labelText: 'Masukkan Token', ), ), ], ), ), ], ), ), )); } }