import 'dart:io'; import 'package:doctor_app_flutter/core/enum/auth_method_types.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; import 'package:doctor_app_flutter/widgets/auth/method_type_card.dart'; import 'package:flutter/material.dart'; import 'package:local_auth/local_auth.dart'; import 'package:provider/provider.dart'; class VerificationMethodsList extends StatefulWidget { final AuthMethodTypes? authMethodType; final Function(AuthMethodTypes type, bool isActive)? authenticateUser; final Function() onShowMore; final AuthenticationViewModel? authenticationViewModel; const VerificationMethodsList({Key? key, this.authMethodType, this.authenticateUser, required this.onShowMore, this.authenticationViewModel}) : super(key: key); @override _VerificationMethodsListState createState() => _VerificationMethodsListState(); } class _VerificationMethodsListState extends State { final LocalAuthentication auth = LocalAuthentication(); late ProjectViewModel projectsProvider; @override Widget build(BuildContext context) { projectsProvider = Provider.of(context); switch (widget.authMethodType) { case AuthMethodTypes.WhatsApp: return MethodTypeCard( assetPath: 'assets/images/svgs/verification/verify-whtsapp.svg', onTap: () => {widget.authenticateUser!(AuthMethodTypes.WhatsApp, true)}, label: TranslationBase.of(context).verifyWith + TranslationBase.of(context).verifyWhatsApp, ); break; case AuthMethodTypes.SMS: return MethodTypeCard( assetPath: "assets/images/svgs/verification/verify-sms.svg", onTap: () => {widget.authenticateUser!(AuthMethodTypes.SMS, true)}, label: TranslationBase.of(context).verifyWith + TranslationBase.of(context).verifySMS, ); break; case AuthMethodTypes.Fingerprint: return MethodTypeCard( assetPath: 'assets/images/svgs/verification/verify-finger.svg', onTap: () async { if (await widget.authenticationViewModel!.checkIfBiometricAvailable(Platform.isIOS ? BiometricType.fingerprint : BiometricType.strong)) { widget.authenticateUser!(AuthMethodTypes.Fingerprint, true); } }, label: TranslationBase.of(context).verifyWith + TranslationBase.of(context).verifyFingerprint, ); break; case AuthMethodTypes.FaceID: return MethodTypeCard( assetPath: 'assets/images/svgs/verification/verify-face.svg', onTap: () async { if (await widget.authenticationViewModel!.checkIfBiometricAvailable(Platform.isIOS ? BiometricType.face : BiometricType.strong)) { widget.authenticateUser!(AuthMethodTypes.FaceID, true); } }, label: TranslationBase.of(context).verifyWith + TranslationBase.of(context).verifyFaceID, ); break; default: return MethodTypeCard( assetPath: 'assets/images/login/more_icon.png', onTap: widget.onShowMore, isSvg: false, label: TranslationBase.of(context).moreVerification, height: 0, ); } } }