import 'package:flutter/material.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; class EditSatpamScreen extends StatefulWidget { final String documentId; const EditSatpamScreen({Key? key, required this.documentId}) : super(key: key); @override _EditSatpamScreenState createState() => _EditSatpamScreenState(); } class _EditSatpamScreenState extends State { TextEditingController _namaController = TextEditingController(); TextEditingController _nomorController = TextEditingController(); TextEditingController _emailController = TextEditingController(); TextEditingController _passwordController = TextEditingController(); @override void initState() { super.initState(); // Load existing data from Firestore and set it to controllers FirebaseFirestore.instance.collection('satpam').doc(widget.documentId).get().then((snapshot) { if (snapshot.exists) { setState(() { _namaController.text = snapshot['nama']; _nomorController.text = snapshot['nomor']; _emailController.text = snapshot['email']; _passwordController.text = snapshot['password']; }); } }); } // Fungsi untuk memvalidasi email bool isValidEmail(String email) { String pattern = r'^[^@]+@[^@]+\.[^@]+$'; // Regex untuk memvalidasi email RegExp regex = RegExp(pattern); return regex.hasMatch(email); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Edit Data Satpam'), ), body: SingleChildScrollView( padding: EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ TextField( controller: _namaController, decoration: InputDecoration(labelText: 'Nama Satpam'), ), TextField( controller: _nomorController, decoration: InputDecoration(labelText: 'Nomor Telepon Satpam'), ), TextField( controller: _emailController, decoration: InputDecoration(labelText: 'Email Satpam'), ), TextField( controller: _passwordController, decoration: InputDecoration(labelText: 'Password Satpam'), ), SizedBox(height: 20.0), ElevatedButton( onPressed: () { if (_namaController.text.isEmpty || _nomorController.text.isEmpty || _emailController.text.isEmpty || _passwordController.text.isEmpty) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Data Wajib Terisi Semua Dengan Benar'), ), ); Navigator.pop(context); } else if (!isValidEmail(_emailController.text)) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Format email tidak valid'), ), ); Navigator.pop(context); } else { // Update data in Firestore FirebaseFirestore.instance.collection('satpam').doc(widget.documentId).update({ 'nama': _namaController.text, 'nomor': _nomorController.text, 'email': _emailController.text, 'password': _passwordController.text, }).then((_) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Data satpam berhasil dirubah'), ), ); Navigator.pop(context); }).catchError((error) { print('Error updating family data: $error'); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Gagal Ubah Data Satpam'), ), ); }); } }, child: Text('Update'), ), ], ), ), ); } }