25.12.04 잠금 해제, uv 살균, 건조팬 동작 기능 구현
This commit is contained in:
@@ -4,6 +4,9 @@ import 'package:latlong2/latlong.dart';
|
||||
import 'dart:ui' as ui;
|
||||
import 'package:smarthelmet_app/widgets/custom_header.dart';
|
||||
|
||||
//25.12.03 지은 추가
|
||||
import 'package:smarthelmet_app/services/locker_api.dart';
|
||||
|
||||
class HomeScreenContent extends StatefulWidget {
|
||||
const HomeScreenContent({super.key});
|
||||
|
||||
@@ -23,6 +26,25 @@ class _HomeScreenContentState extends State<HomeScreenContent> {
|
||||
final Color _toggleOffTrackColor = const Color(0xFFE0E0E0);
|
||||
final Color _toggleOffKnobBorderColor = const Color(0xFFE0E0E0);
|
||||
|
||||
// 25.12.03 지은 추가 시작
|
||||
final LockerApi _api = LockerApi();
|
||||
bool _isLoading = false;
|
||||
|
||||
Future<void> _runLockerAction(String name, Future<bool> Function() action) async {
|
||||
if (_isLoading) return;
|
||||
|
||||
setState(() => _isLoading = true);
|
||||
|
||||
// 실제 명령 전송
|
||||
final success = await action();
|
||||
|
||||
setState(() => _isLoading = false);
|
||||
|
||||
if (!mounted) return;
|
||||
}
|
||||
|
||||
// 25.12.03 지은 추가 끝
|
||||
|
||||
int _selectedImageIndex = 0;
|
||||
|
||||
static const BoxShadow _cleanShadow = BoxShadow(
|
||||
@@ -329,7 +351,21 @@ class _HomeScreenContentState extends State<HomeScreenContent> {
|
||||
child: _buildStyledToggleSwitch(
|
||||
'UV LED',
|
||||
_controlToggles['UV LED']!,
|
||||
(val) => setState(() => _controlToggles['UV LED'] = val))),
|
||||
// 25.12.03 지은 수정 시작
|
||||
(val) {
|
||||
_runLockerAction("UV 제어", () async {
|
||||
bool success = await _api.setUV(val);
|
||||
|
||||
if (success) {
|
||||
setState(() => _controlToggles['UV LED'] = val);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
// 25.12.03 지은 수정 끝
|
||||
VerticalDivider(color: _mainBlueColor.withOpacity(0.5), indent: 10, endIndent: 10),
|
||||
Expanded(
|
||||
child: _buildStyledToggleSwitch(
|
||||
@@ -346,7 +382,22 @@ class _HomeScreenContentState extends State<HomeScreenContent> {
|
||||
Expanded(
|
||||
child: _buildStyledToggleSwitch('FAN',
|
||||
_controlToggles['FAN']!,
|
||||
(val) => setState(() => _controlToggles['FAN'] = val))),
|
||||
// 25.12.03 지은 수정 시작
|
||||
(val) {
|
||||
print("👉 [디버깅] fan 눌림! 값: $val");
|
||||
_runLockerAction("FAN 제어", () async {
|
||||
print("👉 [디버깅] API 요청 시작...");
|
||||
bool success = await _api.setFan(val);
|
||||
|
||||
if (success) {
|
||||
setState(() => _controlToggles['FAN'] = val);
|
||||
}
|
||||
return success;
|
||||
});
|
||||
},
|
||||
// 25.12.03 지은 수정 끝
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user