pembaruan backend data
This commit is contained in:
parent
c07c4e97b9
commit
739616275c
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
}
|
||||
|
|
|
|||
36
pubspec.lock
36
pubspec.lock
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue