import 'package:flutter/material.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import '../widgets/tambah_user.dart'; class AdminHomeScreen extends StatefulWidget { const AdminHomeScreen({super.key}); @override State createState() => _AdminHomeScreenState(); } class _AdminHomeScreenState extends State { final FirebaseFirestore _firestore = FirebaseFirestore.instance; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFF0B1600), appBar: AppBar( title: const Text( "Manajemen Pengguna", style: TextStyle( fontWeight: FontWeight.bold, ), ), centerTitle: true, backgroundColor: const Color(0xFFA5CC36), foregroundColor: Colors.black, elevation: 0, ), floatingActionButton: FloatingActionButton.extended( backgroundColor: const Color(0xFFA5CC36), foregroundColor: Colors.black, icon: const Icon(Icons.person_add), label: const Text("Tambah User"), onPressed: () { showDialog( context: context, barrierDismissible: false, builder: (_) => const TambahUserDialog(), ); }, ), body: StreamBuilder( stream: _firestore.collection('users').snapshots(), builder: (context, snapshot) { if (!snapshot.hasData) { return const Center( child: CircularProgressIndicator(), ); } final users = snapshot.data!.docs; if (users.isEmpty) { return const Center( child: Text( "Belum ada user", style: TextStyle( color: Colors.white, fontSize: 16, ), ), ); } return ListView.builder( padding: const EdgeInsets.all(15), itemCount: users.length, itemBuilder: (context, index) { final data = users[index].data() as Map; return Card( margin: const EdgeInsets.only(bottom: 12), elevation: 5, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20), ), child: ListTile( contentPadding: const EdgeInsets.all(15), leading: CircleAvatar( radius: 28, backgroundColor: const Color(0xFFA5CC36), child: Icon( data['role'] == 'admin' ? Icons.admin_panel_settings : Icons.person, color: Colors.black, ), ), title: Text( data['nama'] ?? '-', style: const TextStyle( fontWeight: FontWeight.bold, ), ), subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 5), Text(data['email'] ?? '-'), const SizedBox(height: 5), Container( padding: const EdgeInsets.symmetric( horizontal: 10, vertical: 4, ), decoration: BoxDecoration( color: data['role'] == 'admin' ? Colors.red.shade100 : Colors.green.shade100, borderRadius: BorderRadius.circular(10), ), child: Text( data['role'] ?? '-', style: const TextStyle( fontWeight: FontWeight.bold, ), ), ), if (data['rfid_uid'] != null && data['rfid_uid'] .toString() .isNotEmpty) Padding( padding: const EdgeInsets.only( top: 5, ), child: Text( "RFID : ${data['rfid_uid']}", ), ), ], ), ), ); }, ); }, ), ); } }