startCheckIn method
Future<void>
startCheckIn(
- CameraController cam,
- bool isRegister,
- BuildContext context,
- Function startCheckIn,
- Function registerFace,
Implementation
Future<void> startCheckIn(
CameraController cam,
bool isRegister,
BuildContext context,
Function startCheckIn,
Function registerFace,
) async {
if (isNavigating.value) return;
await cam.setFlashMode(FlashMode.off);
await cam.setExposureOffset(1.2);
while (true) {
guideText.value = '📸 Chuẩn bị chụp ảnh...';
final picture = await cam.takePicture();
File file = File(picture.path);
if (cam.description.lensDirection == CameraLensDirection.front) {
file = await _fixMirrorImage(file);
}
guideText.value = '🔍 Đang kiểm tra khuôn mặt...';
final face = await _detectFace(file);
if (face == null) {
guideText.value = '❌ Không phát hiện khuôn mặt, thử lại...';
await Future.delayed(const Duration(seconds: 2));
continue;
}
final cropped = await _cropFace(file, face);
final isReal = await liveness.isReal(cropped);
if (!isReal) {
guideText.value = '❌ Ảnh không phải người thật, thử lại...';
await Future.delayed(const Duration(seconds: 2));
continue;
}
guideText.value = '📍 Đang lấy vị trí...';
final pos = cachedPosition ?? await Geolocator.getCurrentPosition();
currentPosition.value = pos;
isNavigating.value = true;
print('abvcc');
if (isRegister) {
await _goToResult(context, cropped, pos,registerFace);
break;
}
try {
print('sssss');
print(cropped);
print(pos);
startCheckIn(cropped, pos);
print('sangdddd');
// final result =
// await _faceRepo.checkIn(cropped, pos.latitude, pos.longitude);
// final code = result?.code;
// final status = result?.data?.status;
// final message = result?.message ?? 'Có lỗi xảy ra';
//
// if (code == 200 && status == StatusFace.success) {
// EasyLoading.showToast(message);
// Get.back();
// break;
// }
//
// if (code == 400 && status == StatusFace.notRegister) {
// await _goToResult(context, cropped, pos);
// break;
// }
//
// if (code == 400) {
// showErrorDialog(context, message);
// break;
// }
//
// EasyLoading.showToast(message);
// Get.back();
break;
} catch (e) {
print('abccccccc');
print(e);
showErrorDialog(context, e.toString());
break;
} finally {
isNavigating.value = false;
guideText.value = 'Nhấn 📸 để bắt đầu lại';
}
}
}