TKK_E32210493/lib/DataDisplayPage.dart

96 lines
3.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:firebase_database/firebase_database.dart';
class DataDisplayPage extends StatefulWidget {
@override
_DataDisplayPageState createState() => _DataDisplayPageState();
}
class _DataDisplayPageState extends State<DataDisplayPage> {
final databaseRef = FirebaseDatabase.instance.reference();
List<Map<String, dynamic>> dataList = [];
@override
void initState() {
super.initState();
fetchData();
}
void fetchData() {
DatabaseReference reference = databaseRef.child('data-listrik');
reference.once().then((DatabaseEvent event) {
DataSnapshot snapshot = event.snapshot;
Map<dynamic, dynamic>? data = snapshot.value as Map<dynamic, dynamic>?;
if (data != null) {
data.forEach((key, value) {
setState(() {
dataList.add({
"datetime": value["dateTime"],
"voltage": value["voltage"],
"current": value["current"],
"power": value["power"],
"energy": value["energy"],
"va": value["va"],
"frequency": value["frequency"],
"pf": value["pf"]
});
});
});
// Sort dataList by datetime
dataList.sort((a, b) => a["datetime"].compareTo(b["datetime"]));
}
}).catchError((error) {
// Handle errors here
print("Error fetching data: $error");
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Data Listrik'),
),
body: dataList.isEmpty
? Center(child: CircularProgressIndicator())
: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: SingleChildScrollView(
child: DataTable(
columnSpacing: 10,
dataRowHeight: 40,
columns: [
DataColumn(label: Text('No.')),
DataColumn(label: Text('Datetime')),
DataColumn(label: Text('Voltage (V)')),
DataColumn(label: Text('Current (A)')),
DataColumn(label: Text('Power (W)')),
DataColumn(label: Text('Energy (kWh)')),
DataColumn(label: Text('VA')),
DataColumn(label: Text('Frequency (Hz)')),
DataColumn(label: Text('Pf')),
],
rows: dataList
.asMap()
.entries
.map((entry) => DataRow(cells: [
DataCell(Text((entry.key + 1).toString())),
DataCell(Text(entry.value['datetime'].toString())),
DataCell(Text(entry.value['voltage'].toString())),
DataCell(Text(entry.value['current'].toString())),
DataCell(Text(entry.value['power'].toString())),
DataCell(Text(entry.value['energy'].toString())),
DataCell(Text(entry.value['va'].toString())),
DataCell(Text(entry.value['frequency'].toString())),
DataCell(Text(entry.value['pf'].toString())),
]))
.toList(),
),
),
),
);
}
}