From 53c01e694f9768916cddc691639dce14b89840b0 Mon Sep 17 00:00:00 2001 From: kleponijo Date: Mon, 13 Jul 2026 13:55:45 +0700 Subject: [PATCH] oke --- lib/screens/home/views/home_screen.dart | 7 ++++++ lib/screens/home/views/main_drawer.dart | 22 +++++++++++++++++++ .../home/widgets/dashboard_charts.dart | 19 ++++++++++++++++ lib/screens/home/widgets/sensor_grid.dart | 17 ++++++++++++++ 4 files changed, 65 insertions(+) diff --git a/lib/screens/home/views/home_screen.dart b/lib/screens/home/views/home_screen.dart index c287dae..5b334ae 100644 --- a/lib/screens/home/views/home_screen.dart +++ b/lib/screens/home/views/home_screen.dart @@ -5,6 +5,7 @@ import '../../../blocs/authentication_bloc/authentication_bloc.dart'; import '../../../blocs/notification_bloc/notification_bloc.dart'; import '../../monitoring/wind_speed/blocs/wind_speed_bloc.dart'; import '../../monitoring/atmospheric_conditions/blocs/atmospheric_conditions_bloc.dart'; +import '../../monitoring/evaporasi/blocs/evaporasi_bloc.dart'; import '../../auth/views/welcome_screen.dart'; import '../widgets/notification_panel.dart'; import '../widgets/sensor_grid.dart'; @@ -69,6 +70,12 @@ class _HomeScreenState extends State repository: context.read(), )..add(WatchAtmosphericConditionsStarted()), ), + BlocProvider( + create: (context) => EvaporasiBloc( + repository: context.read(), + notificationBloc: context.read(), + )..add(WatchEvaporasiStarted()), + ), ], child: BlocListener( listener: (context, state) { diff --git a/lib/screens/home/views/main_drawer.dart b/lib/screens/home/views/main_drawer.dart index d8fad5a..4ad919a 100644 --- a/lib/screens/home/views/main_drawer.dart +++ b/lib/screens/home/views/main_drawer.dart @@ -6,6 +6,8 @@ import '../../monitoring/wind_speed/views/wind_speed_screen.dart'; import '../../monitoring/wind_speed/blocs/wind_speed_bloc.dart'; import '../../monitoring/atmospheric_conditions/blocs/atmospheric_conditions_bloc.dart'; import '../../monitoring/atmospheric_conditions/views/atmospheric_screen.dart'; +import '../../monitoring/evaporasi/blocs/evaporasi_bloc.dart'; +import '../../monitoring/evaporasi/views/evaporasi_screen.dart'; import '../../../blocs/notification_bloc/notification_bloc.dart'; class MainDrawer extends StatelessWidget { @@ -89,6 +91,26 @@ class MainDrawer extends StatelessWidget { ); }, ), + ListTile( + leading: + Icon(Icons.water_drop, color: Colors.teal.shade600, size: 20), + title: const Text("Evaporasi"), + onTap: () { + Navigator.pop(context); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => BlocProvider( + create: (context) => EvaporasiBloc( + repository: context.read(), + notificationBloc: context.read(), + )..add(WatchEvaporasiStarted()), + child: const EvaporasiScreen(), + ), + ), + ); + }, + ), const Spacer(), // Dorong menu logout ke paling bawah const Divider(), ListTile( diff --git a/lib/screens/home/widgets/dashboard_charts.dart b/lib/screens/home/widgets/dashboard_charts.dart index 8fef7d2..f9b2615 100644 --- a/lib/screens/home/widgets/dashboard_charts.dart +++ b/lib/screens/home/widgets/dashboard_charts.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../monitoring/wind_speed/blocs/wind_speed_bloc.dart'; import '../../monitoring/atmospheric_conditions/blocs/atmospheric_conditions_bloc.dart'; +import '../../monitoring/evaporasi/blocs/evaporasi_bloc.dart'; /// Period selector khusus untuk dashboard class DashboardPeriodSelector extends StatelessWidget { @@ -128,6 +129,24 @@ class _DashboardChartsState extends State { ), const SizedBox(width: 12), + // 2. Evaporasi + BlocBuilder( + builder: (context, state) { + return _SensorChartCard( + title: 'Evaporasi', + unit: 'mm', + color: Colors.teal.shade600, + bgColor: Colors.teal.shade50, + icon: Icons.water_drop, + currentValue: state.currentValue, + data: state.chartValues, + period: _period, + isLoading: state.isLoading, + ); + }, + ), + const SizedBox(width: 12), + // 3. Tekanan Udara — hanya realtime (tidak ada history) BlocBuilder( diff --git a/lib/screens/home/widgets/sensor_grid.dart b/lib/screens/home/widgets/sensor_grid.dart index 695e782..fcd72ae 100644 --- a/lib/screens/home/widgets/sensor_grid.dart +++ b/lib/screens/home/widgets/sensor_grid.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../monitoring/wind_speed/blocs/wind_speed_bloc.dart'; import '../../monitoring/atmospheric_conditions/blocs/atmospheric_conditions_bloc.dart'; +import '../../monitoring/evaporasi/blocs/evaporasi_bloc.dart'; class SensorGrid extends StatelessWidget { const SensorGrid({super.key}); @@ -47,6 +48,22 @@ class SensorGrid extends StatelessWidget { isLoading: state.isLoading, ), ), + + // --- EVAPORASI --- + BlocBuilder( + builder: (context, state) => SensorCard( + width: cardWidth, + icon: Icons.water_drop, + iconColor: Colors.teal.shade600, + iconBgColor: Colors.teal.shade50, + label: 'Evaporasi', + value: state.isLoading + ? '—' + : state.currentValue.toStringAsFixed(1), + unit: 'mm', + isLoading: state.isLoading, + ), + ), ], ); },