import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:hmg_nurses/classes/colors.dart'; import 'package:hmg_nurses/classes/enums.dart'; import 'package:hmg_nurses/classes/size_config.dart'; import 'package:hmg_nurses/generated/locale_keys.g.dart'; import 'package:hmg_nurses/ui/login/login_vm.dart'; import 'package:local_auth/local_auth.dart'; class VerificationMethodsList extends StatefulWidget { final AuthMethodTypes authMethodType; final Function(AuthMethodTypes type, bool isActive)? authenticateUser; final Function? onShowMore; final LoginViewModel loginViewModel; const VerificationMethodsList({Key? key, required this.authMethodType, this.authenticateUser, this.onShowMore, required this.loginViewModel}) : super(key: key); @override VerificationMethodsListState createState() => VerificationMethodsListState(); } class VerificationMethodsListState extends State { final LocalAuthentication auth = LocalAuthentication(); @override Widget build(BuildContext context) { switch (widget.authMethodType) { case AuthMethodTypes.whatsApp: return MethodTypeCard( assetPath: 'assets/images/login/verify_whatsapp.svg', onTap: () => {widget.authenticateUser!(AuthMethodTypes.whatsApp, true)}, label: LocaleKeys.verifyThroughWhatsapp.tr(), ); case AuthMethodTypes.sms: return MethodTypeCard( assetPath: "assets/images/login/verify_sms.svg", onTap: () => {widget.authenticateUser!(AuthMethodTypes.sms, true)}, label: LocaleKeys.verifyThroughSMS.tr(), ); case AuthMethodTypes.fingerPrint: return MethodTypeCard( assetPath: 'assets/images/login/verify_thumb.svg', onTap: () => {widget.authenticateUser!(AuthMethodTypes.fingerPrint, true)}, label: LocaleKeys.verifyThroughFingerprint.tr(), ); case AuthMethodTypes.faceID: return MethodTypeCard( assetPath: 'assets/images/login/verify_face.svg', onTap: () => {widget.authenticateUser!(AuthMethodTypes.faceID, true)}, label: LocaleKeys.verifyThroughFace.tr(), ); default: return MethodTypeCard( assetPath: 'assets/images/login/more_icon.png', onTap: () { widget.onShowMore!(); }, isSvg: false, label: LocaleKeys.moreVerificationOpts.tr(), height: 0, ); } } } class MethodTypeCard extends StatelessWidget { const MethodTypeCard({ Key? key, required this.assetPath, required this.onTap, required this.label, this.height = 20, this.isSvg = true, }) : super(key: key); final String assetPath; final GestureTapCallback onTap; final String label; final double height; final bool isSvg; @override Widget build(BuildContext context) { double cardHeight = SizeConfig.heightMultiplier! * (SizeConfig.isHeightVeryShort ? 22 : SizeConfig.isHeightLarge ? 25 : 20); return InkWell( onTap: onTap, child: Container( margin: const EdgeInsets.all(10), decoration: BoxDecoration( color: Colors.white, borderRadius: const BorderRadius.all(Radius.circular(10)), border: Border.all(color: HexColor('#707070'), width: 0.1), ), height: cardHeight, child: Padding( padding: const EdgeInsets.all(12.0), child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ isSvg ? SvgPicture.asset(assetPath, width: SizeConfig.widthMultiplier! * (14), height: cardHeight * 0.20) : Image.asset( assetPath, width: SizeConfig.widthMultiplier! * (12), height: cardHeight * 0.35, // height: , ), SizedBox( height: height, ), Text( label, style: TextStyle( fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isHeightVeryShort ? 3 : 3.7), color: MyColors.darkTextColor, fontWeight: FontWeight.w600, letterSpacing: -0.48, ), ) ], ), ), )), ); } }