From 07d5cb369a6d1e227337c3319088138f6483c085 Mon Sep 17 00:00:00 2001 From: kleponijo <158453666+kleponijo@users.noreply.github.com> Date: Sat, 2 May 2026 15:07:33 +0700 Subject: [PATCH] joss jiss --- .../device_setup/blocs/device_setup_bloc.dart | 3 ++- .../views/device_setup_screen.dart | 26 +++++++++++-------- .../wind_speed/blocs/wind_speed_bloc.dart | 4 +-- .../wind_speed/blocs/wind_speed_event.dart | 8 ------ .../wind_speed/blocs/wind_speed_state.dart | 3 ++- macos/Flutter/GeneratedPluginRegistrant.swift | 2 ++ pubspec.lock | 8 ++++++ pubspec.yaml | 1 + 8 files changed, 32 insertions(+), 23 deletions(-) diff --git a/lib/screens/monitoring/device_setup/blocs/device_setup_bloc.dart b/lib/screens/monitoring/device_setup/blocs/device_setup_bloc.dart index 8043ac7..5a42d4c 100644 --- a/lib/screens/monitoring/device_setup/blocs/device_setup_bloc.dart +++ b/lib/screens/monitoring/device_setup/blocs/device_setup_bloc.dart @@ -115,7 +115,8 @@ class DeviceSetupBloc extends Bloc { // ESP restart setelah terima kredensial → koneksi putus → itu normal! // DioException di sini kemungkinan besar karena ESP sudah restart. if (e.type == DioExceptionType.receiveTimeout || - e.type == DioExceptionType.connectionError) { + e.type == DioExceptionType.connectionError || + e.type == DioExceptionType.sendTimeout) { emit(state.copyWith( status: DeviceSetupStatus.success, successMessage: diff --git a/lib/screens/monitoring/device_setup/views/device_setup_screen.dart b/lib/screens/monitoring/device_setup/views/device_setup_screen.dart index b6a4811..ada34d6 100644 --- a/lib/screens/monitoring/device_setup/views/device_setup_screen.dart +++ b/lib/screens/monitoring/device_setup/views/device_setup_screen.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../blocs/device_setup_bloc.dart'; +import 'package:app_settings/app_settings.dart'; class DeviceSetupScreen extends StatefulWidget { const DeviceSetupScreen({super.key}); @@ -159,7 +160,7 @@ class _DeviceSetupScreenState extends State { showDialog( context: context, barrierDismissible: false, - builder: (_) => AlertDialog( + builder: (dialogContext) => AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), title: Row( children: [ @@ -173,12 +174,21 @@ class _DeviceSetupScreenState extends State { ), content: Text(message), actions: [ + if (!success) // ← tambah tombol Coba Lagi jika gagal + TextButton( + onPressed: () { + Navigator.of(dialogContext).pop(); // tutup dialog + context.read().add( + ResetDeviceSetupEvent()); // kembali ke wind_speed_screen + }, + child: const Text('Coba Lagi'), + ), TextButton( onPressed: () { - Navigator.of(context).pop(); // tutup dialog - Navigator.of(context).pop(); // kembali ke wind_speed_screen + Navigator.of(dialogContext).pop(); + Navigator.of(context).pop(); }, - child: const Text('Selesai'), + child: Text(success ? 'Selesai' : 'Tutup'), ), ], ), @@ -353,13 +363,7 @@ class _OpenWifiSettingsButton extends StatelessWidget { // Buka pengaturan WiFi sistem HP // Butuh package: app_settings (opsional) // AppSettings.openWIFISettings(); - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text( - 'Buka Pengaturan WiFi HP → sambungkan ke "Anemometer-Setup"'), - behavior: SnackBarBehavior.floating, - ), - ); + AppSettings.openAppSettings(type: AppSettingsType.wifi); }, icon: const Icon(Icons.settings_rounded, size: 16), label: const Text('Buka Setting'), diff --git a/lib/screens/monitoring/wind_speed/blocs/wind_speed_bloc.dart b/lib/screens/monitoring/wind_speed/blocs/wind_speed_bloc.dart index 062787d..9a995a7 100644 --- a/lib/screens/monitoring/wind_speed/blocs/wind_speed_bloc.dart +++ b/lib/screens/monitoring/wind_speed/blocs/wind_speed_bloc.dart @@ -11,8 +11,8 @@ part 'wind_speed_state.dart'; /// Threshold kecepatan angin (satuan m/s) /// Referensi: Beaufort scale & BMKG -const double _kWindWarning = 2.0; // Waspada: 8–12.5 m/s (~29–45 km/h) -const double _kWindDanger = 4.0; // Bahaya: > 12.5 m/s (> 45 km/h) +const double _kWindWarning = 8.0; // Waspada: 8–12.5 m/s (~29–45 km/h) +const double _kWindDanger = 12.5; // Bahaya: > 12.5 m/s (> 45 km/h) class WindSpeedBloc extends Bloc { final MonitoringRepository _repository; diff --git a/lib/screens/monitoring/wind_speed/blocs/wind_speed_event.dart b/lib/screens/monitoring/wind_speed/blocs/wind_speed_event.dart index 445c8c6..e966119 100644 --- a/lib/screens/monitoring/wind_speed/blocs/wind_speed_event.dart +++ b/lib/screens/monitoring/wind_speed/blocs/wind_speed_event.dart @@ -14,11 +14,3 @@ class WindSpeedPeriodChanged extends WindSpeedEvent { final String period; const WindSpeedPeriodChanged(this.period); } - -// Event internal: saat data baru masuk dari Firebase -class _WindSpeedUpdated extends WindSpeedEvent { - final MyWindSpeed data; - const _WindSpeedUpdated(this.data); - @override - List get props => [data]; -} diff --git a/lib/screens/monitoring/wind_speed/blocs/wind_speed_state.dart b/lib/screens/monitoring/wind_speed/blocs/wind_speed_state.dart index f61404d..7ff5572 100644 --- a/lib/screens/monitoring/wind_speed/blocs/wind_speed_state.dart +++ b/lib/screens/monitoring/wind_speed/blocs/wind_speed_state.dart @@ -51,6 +51,7 @@ class WindSpeedState extends Equatable { weeklySpeeds, monthlySpeeds, isLoading, - history + history, + alertLevel, ]; } diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index bf298b9..9b58f8a 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import app_settings import cloud_firestore import firebase_auth import firebase_core @@ -13,6 +14,7 @@ import google_sign_in_ios import printing func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppSettingsPlugin.register(with: registry.registrar(forPlugin: "AppSettingsPlugin")) FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/pubspec.lock b/pubspec.lock index ffc5bd8..4867820 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -9,6 +9,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.66" + app_settings: + dependency: "direct main" + description: + name: app_settings + sha256: "64d50e666fd96ae90301bf71205f05019286f940ad6f5fed3d1be19c6af7546a" + url: "https://pub.dev" + source: hosted + version: "7.0.0" archive: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 4a46cde..fff0541 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,6 +5,7 @@ version: 1.0.0+1 environment: sdk: ^3.1.0 dependencies: + app_settings: ^7.0.0 bloc: ^8.1.0 bloc_concurrency: ^0.2.5 cloud_firestore: ^6.1.1