import 'package:flutter/material.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; class RegisterGuru extends StatefulWidget { const RegisterGuru({super.key}); @override State createState() => _RegisterGuruState(); } class _RegisterGuruState extends State { final nama = TextEditingController(); final email = TextEditingController(); final password = TextEditingController(); bool isLoading = false; Future register() async { if (nama.text.isEmpty || email.text.isEmpty || password.text.isEmpty) return; setState(() => isLoading = true); try { final userCred = await FirebaseAuth.instance.createUserWithEmailAndPassword( email: email.text, password: password.text, ); await FirebaseFirestore.instance .collection('users') .doc(userCred.user!.uid) .set({ 'role': 'guru', 'nama': nama.text, }); ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Register berhasil')), ); Navigator.pop(context); } catch (e) { ScaffoldMessenger.of(context) .showSnackBar(const SnackBar(content: Text('Register gagal'))); } setState(() => isLoading = false); } Widget input(controller, String hint, {bool pass = false}) { return Container( margin: const EdgeInsets.only(bottom: 15), child: TextField( controller: controller, obscureText: pass, decoration: InputDecoration( hintText: hint, filled: true, fillColor: Colors.grey[100], border: OutlineInputBorder( borderRadius: BorderRadius.circular(15), borderSide: BorderSide.none, ), ), ), ); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.blue, appBar: AppBar( title: const Text('Register Guru'), backgroundColor: Colors.transparent, elevation: 0, ), body: Center( child: Padding( padding: const EdgeInsets.all(20), child: Container( padding: const EdgeInsets.all(20), decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), color: Colors.white, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ const Icon(Icons.person_add, size: 60, color: Colors.blue), const SizedBox(height: 10), input(nama, 'Nama Guru'), input(email, 'Email'), input(password, 'Password', pass: true), const SizedBox(height: 10), SizedBox( width: double.infinity, child: ElevatedButton( onPressed: isLoading ? null : register, style: ElevatedButton.styleFrom( padding: const EdgeInsets.all(15), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), child: isLoading ? const CircularProgressIndicator(color: Colors.white) : const Text('Register'), ), ) ], ), ), ), ), ); } }