// lib/controllers/auth_controller.dart import 'package:Stocky/services/api/api_service.dart'; import 'package:Stocky/services/local/StorageService.dart'; import 'package:get/get.dart'; class AuthController extends GetxController { // Состояния final _state = 'inputPhone'.obs; final ApiService apicontr = Get.find(); Rx phoneNumber = ''.obs; Rx verificationCode = ''.obs; // Получаем текущее состояние String get state => _state.value; // Меняем состояние void setState(String newState) { _state.value = newState; } // Ввод номера void phoneNumberInput(String value) { phoneNumber.value = value; } // Проверка номера bool get isPhoneNumberValid { final clean = phoneNumber.value.replaceAll(RegExp(r'[^0-9]'), ''); return clean.length == 11 && clean.startsWith('7'); // или 10, если без +7 } // Получить "чистый" номер (для отправки на сервер) String get phoneNumberClean { return phoneNumber.value.replaceAll(RegExp(r'[^0-9]'), ''); } // Ввод кода void verificationCodeInput(String value) { verificationCode.value = value; } Future sendCode() async { if (phoneNumber.value.isEmpty) { Get.snackbar('Ошибка', 'Введите номер телефона'); return; } if (!isPhoneNumberValid) { Get.snackbar('Ошибка', 'Неверный номер телефона'); return; } await Future.delayed(const Duration(seconds: 1)); setState('inputCode'); await apicontr.registerByPhone(phoneNumberClean); } // Подтвердить код Future submit() async { if (verificationCode.value.isEmpty) { Get.snackbar('Ошибка', 'Введите код подтверждения'); return; } await Future.delayed(const Duration(seconds: 1)); final reg = await apicontr.loginByPhone( phoneNumber.value, verificationCode.value, ); if (reg) { Get.find().putNumber(phoneNumber.value); Get.snackbar('Успешно', 'Вы вошли!'); Get.offAllNamed('/home'); } } }