121 lines
4.3 KiB
Dart
121 lines
4.3 KiB
Dart
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<EditSatpamScreen> {
|
|
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'),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|