TKK_E32210095/lib/pages/editDataSatpam.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'),
),
],
),
),
);
}
}