done
This commit is contained in:
parent
0efd3de196
commit
b4ac6fcaa8
|
@ -75,4 +75,9 @@ class FirebaseService {
|
||||||
'timestamp': ServerValue.timestamp,
|
'timestamp': ServerValue.timestamp,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hapus riwayat berdasarkan ID
|
||||||
|
Future<void> deleteHistory(String id) async {
|
||||||
|
await _database.child('riwayat').child(id).remove();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
import 'firebase_service.dart';
|
||||||
|
|
||||||
class HistoryPage extends StatefulWidget {
|
class HistoryPage extends StatefulWidget {
|
||||||
final List<Map<String, dynamic>> history;
|
final List<Map<String, dynamic>> history;
|
||||||
|
@ -10,6 +11,51 @@ class HistoryPage extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _HistoryPageState extends State<HistoryPage> {
|
class _HistoryPageState extends State<HistoryPage> {
|
||||||
|
final FirebaseService _firebaseService = FirebaseService();
|
||||||
|
|
||||||
|
Future<void> _deleteHistory(String id) async {
|
||||||
|
// Show confirmation dialog
|
||||||
|
final confirmed = await showDialog<bool>(
|
||||||
|
context: context,
|
||||||
|
builder: (context) => AlertDialog(
|
||||||
|
title: const Text('Konfirmasi Hapus'),
|
||||||
|
content: const Text('Apakah Anda yakin ingin menghapus data ini?'),
|
||||||
|
actions: [
|
||||||
|
TextButton(
|
||||||
|
onPressed: () => Navigator.pop(context, false),
|
||||||
|
child: const Text('Batal'),
|
||||||
|
),
|
||||||
|
TextButton(
|
||||||
|
onPressed: () => Navigator.pop(context, true),
|
||||||
|
style: TextButton.styleFrom(
|
||||||
|
foregroundColor: Colors.red,
|
||||||
|
),
|
||||||
|
child: const Text('Hapus'),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
if (confirmed == true) {
|
||||||
|
try {
|
||||||
|
await _firebaseService.deleteHistory(id);
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
const SnackBar(
|
||||||
|
content: Text('Data berhasil dihapus'),
|
||||||
|
backgroundColor: Colors.green,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
const SnackBar(
|
||||||
|
content: Text('Gagal menghapus data'),
|
||||||
|
backgroundColor: Colors.red,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
|
@ -114,6 +160,7 @@ class _HistoryPageState extends State<HistoryPage> {
|
||||||
DataColumn(label: Text('Humidity')),
|
DataColumn(label: Text('Humidity')),
|
||||||
DataColumn(label: Text('Kipas')),
|
DataColumn(label: Text('Kipas')),
|
||||||
DataColumn(label: Text('Pompa')),
|
DataColumn(label: Text('Pompa')),
|
||||||
|
DataColumn(label: Text('Aksi')),
|
||||||
],
|
],
|
||||||
rows: List.generate(sortedHistory.length, (i) {
|
rows: List.generate(sortedHistory.length, (i) {
|
||||||
final h = sortedHistory[i];
|
final h = sortedHistory[i];
|
||||||
|
@ -217,6 +264,17 @@ class _HistoryPageState extends State<HistoryPage> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
DataCell(
|
||||||
|
IconButton(
|
||||||
|
icon: const Icon(
|
||||||
|
Icons.delete_outline,
|
||||||
|
color: Colors.red,
|
||||||
|
size: 20,
|
||||||
|
),
|
||||||
|
onPressed: () => _deleteHistory(h['id'] as String),
|
||||||
|
tooltip: 'Hapus data',
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
|
|
Loading…
Reference in New Issue