pembaruan backend data

This commit is contained in:
e32232340-Nadif 2026-03-01 19:05:49 +07:00
parent c07c4e97b9
commit 739616275c
4 changed files with 73 additions and 13 deletions

View File

@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:firebase_database/firebase_database.dart';
import 'dart:async';
import 'widgets/monitoring_shared.dart';
/// WIND SPEED MONITORING SCREEN
@ -13,9 +15,41 @@ class WindSpeedMonitoringScreen extends StatefulWidget {
class _WindSpeedMonitoringScreenState extends State<WindSpeedMonitoringScreen> {
String _selectedPeriod = "Hari Ini";
// realtime database state
final DatabaseReference _realtimeRef = FirebaseDatabase.instance.ref('anemometer/realtime');
StreamSubscription<DatabaseEvent>? _realtimeSub;
double _currentSpeed = 0.0;
List<double> _dailySpeeds = List<double>.filled(24, 0.0);
@override
void initState() {
super.initState();
_realtimeSub = _realtimeRef.onValue.listen(_onRealtimeData);
}
void _onRealtimeData(DatabaseEvent event) {
final data = event.snapshot.value;
if (data is Map) {
final speed = (data['kecepatan'] ?? 0).toDouble();
setState(() {
_currentSpeed = speed;
// shift hourly data, keep latest at end
_dailySpeeds.removeAt(0);
_dailySpeeds.add(speed);
});
}
}
@override
void dispose() {
_realtimeSub?.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
return Scaffold,
appBar: AppBar(
title: const Text("Monitoring Kecepatan Angin"),
centerTitle: true,
@ -155,12 +189,10 @@ class _WindSpeedMonitoringScreenState extends State<WindSpeedMonitoringScreen> {
List<FlSpot> _getWindSpeedPeriodData() {
switch (_selectedPeriod) {
case "Hari Ini":
// use live-updated hourly speeds if available
return List.generate(24, (i) {
final values = [
5.0, 5.2, 4.8, 4.5, 4.3, 4.6, 5.1, 6.0, 7.2, 8.5,
9.0, 10.2, 11.0, 10.5, 10.0, 9.2, 8.0, 6.5, 5.5, 5.0, 4.8, 4.5, 5.0, 5.2
];
return FlSpot(i.toDouble(), values[i]);
final value = _dailySpeeds[i];
return FlSpot(i.toDouble(), value);
});
case "Minggu Ini":
return [
@ -366,7 +398,7 @@ class _WindSpeedMonitoringScreenState extends State<WindSpeedMonitoringScreen> {
),
lineBarsData: [
LineChartBarData(
spots: _getWindSpeedPeriodData(),
spots: _getWindSpeedPeriodData(), // uses _dailySpeeds now
isCurved: true,
barWidth: 2.5,
dotData: FlDotData(

View File

@ -8,11 +8,13 @@ import Foundation
import cloud_firestore
import firebase_auth
import firebase_core
import firebase_database
import google_sign_in_ios
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin"))
FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin"))
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
FLTFirebaseDatabasePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseDatabasePlugin"))
FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin"))
}

View File

@ -5,10 +5,10 @@ packages:
dependency: transitive
description:
name: _flutterfire_internals
sha256: e4a1b612fd2955908e26116075b3a4baf10c353418ca645b4deae231c82bf144
sha256: cd83f7d6bd4e4c0b0b4fef802e8796784032e1cc23d7b0e982cf5d05d9bbe182
url: "https://pub.dev"
source: hosted
version: "1.3.65"
version: "1.3.66"
async:
dependency: transitive
description:
@ -133,10 +133,10 @@ packages:
dependency: "direct main"
description:
name: firebase_core
sha256: "29cfa93c771d8105484acac340b5ea0835be371672c91405a300303986f4eba9"
sha256: "923085c881663ef685269b013e241b428e1fb03cdd0ebde265d9b40ff18abf80"
url: "https://pub.dev"
source: hosted
version: "4.3.0"
version: "4.4.0"
firebase_core_platform_interface:
dependency: transitive
description:
@ -149,10 +149,34 @@ packages:
dependency: transitive
description:
name: firebase_core_web
sha256: a631bbfbfa26963d68046aed949df80b228964020e9155b086eff94f462bbf1f
sha256: "83e7356c704131ca4d8d8dd57e360d8acecbca38b1a3705c7ae46cc34c708084"
url: "https://pub.dev"
source: hosted
version: "3.3.1"
version: "3.4.0"
firebase_database:
dependency: "direct main"
description:
name: firebase_database
sha256: f13676fab84671a808eb5eaeecfa2bcb5a3fed2802798c0dd16cb786139a6492
url: "https://pub.dev"
source: hosted
version: "12.1.3"
firebase_database_platform_interface:
dependency: transitive
description:
name: firebase_database_platform_interface
sha256: "2444ec9999a7295b0e7f3fea60105dbbe72fdfad5a9e4c93e72d0b51c181f128"
url: "https://pub.dev"
source: hosted
version: "0.3.0+2"
firebase_database_web:
dependency: transitive
description:
name: firebase_database_web
sha256: "211b6deff7ac373bb539f079d909799e9231397daddc9e0f1768f50f6216f034"
url: "https://pub.dev"
source: hosted
version: "0.2.7+3"
fl_chart:
dependency: "direct main"
description:

View File

@ -9,6 +9,7 @@ dependencies:
sdk: flutter
firebase_core: ^4.3.0
firebase_auth: ^6.1.3
firebase_database: ^10.0.6
cloud_firestore: ^6.1.1
rxdart: ^0.27.7
google_sign_in: ^7.2.0
@ -19,6 +20,7 @@ dependencies:
path: packages/user_repository
cupertino_icons: ^1.0.8
fl_chart: ^1.1.1
firebase_database: ^12.1.3
dev_dependencies:
flutter_test: