25.12.04 잠금 해제, uv 살균, 건조팬 동작 기능 구현

This commit is contained in:
2025-12-04 00:00:37 +09:00
parent f8078e1b8b
commit 913ca9136a
4 changed files with 148 additions and 2 deletions

View File

@@ -3,6 +3,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:latlong2/latlong.dart';
//25.12.03 지은 추가
import 'package:smarthelmet_app/services/locker_api.dart';
class RentalProcessScreen extends StatefulWidget {
final String stationName;
@@ -26,6 +29,25 @@ class _RentalProcessScreenState extends State<RentalProcessScreen> {
static const Color _primaryGreen = Color(0xFF4CAF50);
static const Color _primaryOrange = Color(0xFFFF3D00);
// 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 지은 추가 끝
final PageController _pageController = PageController();
int _currentPage = 0;
Timer? _timer;
@@ -241,6 +263,9 @@ class _RentalProcessScreenState extends State<RentalProcessScreen> {
height: 68,
child: ElevatedButton(
onPressed: () {
// 25.12.03 지은 추가
_runLockerAction("잠금 해제", () => _api.unlock());
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('문이 열렸습니다! (OPEN 버튼 눌림)'),