josssssss

This commit is contained in:
kleponijo 2026-04-12 16:58:22 +07:00
parent ea24df2e53
commit 015ff0da93
4 changed files with 30 additions and 6 deletions

View File

@ -11,13 +11,28 @@ class FirebaseMonitoringRepo implements MonitoringRepository {
// Satu fungsi untuk semua jenis sensor // Satu fungsi untuk semua jenis sensor
// Kamu cukup masukkan "path" database-nya saja // Kamu cukup masukkan "path" database-nya saja
@override @override
Stream<DatabaseEvent> getSensorStream(String path) { Stream<T> getSensorStream<T>(
return _db.ref(path).onValue; String path,
T Function(Map<dynamic, dynamic> json) mapper,
) {
/// === ambil data mentah dari firebase === ///
return _db.ref(path).onValue.map((event) {
/// == ambil value-nya dan pastikan tipenya map == ///
final data = event.snapshot.value as Map<dynamic, dynamic>? ?? {};
/// == masukan ke dalam "pabrik" (mapper) agar jadi objek == ///
return mapper(data);
});
} }
@override @override
// Jika ingin mengambil data sekali saja (bukan stream) // Jika ingin mengambil data sekali saja (bukan stream)
Future<DataSnapshot> getSensorSnapshot(String path) async { Future<T> getSensorSnapshot<T>(
return await _db.ref(path).get(); String path,
T Function(Map<dynamic, dynamic> json) mapper,
) async {
final snapshot = await _db.ref(path).get();
final data = snapshot.value as Map<dynamic, dynamic>? ?? {};
return mapper(data);
} }
} }

View File

@ -1 +1,3 @@
export 'wind_speed.dart'; export 'wind_speed.dart';
export 'evaporasi.dart';
export 'pressure_sensor.dart';

View File

@ -1,7 +1,14 @@
import 'package:firebase_database/firebase_database.dart'; import 'package:firebase_database/firebase_database.dart';
import 'models/models.dart';
abstract class MonitoringRepository { abstract class MonitoringRepository {
Stream<DatabaseEvent> getSensorStream(String path); Stream<T> getSensorStream<T>(
String path,
T Function(Map<dynamic, dynamic> json) mapper,
);
Future<DataSnapshot> getSensorSnapshot(String path); Future<T> getSensorSnapshot<T>(
String path,
T Function(Map<dynamic, dynamic> json) mapper,
);
} }