Merge branch 'login-validator' into 'master'

Extracted login validation logic from _validateLogin method and moved it to...

See merge request profile-image/kedaireka/polinema-adapative-learning/mobile-adaptive-learning!22
This commit is contained in:
Naresh Pratista 2024-12-02 07:13:42 +00:00
commit f396ad1c07

View File

@ -115,22 +115,6 @@ class _SigninScreenState extends State<SigninScreen> {
CustomSnackBar.show(context, message: message, isError: true);
}
String? _validateLogin(String? value) {
if (value == null || value.isEmpty) {
return 'Login credential cannot be empty';
}
value = value.trim();
if (value.contains('@')) {
return context.read<ValidatorProvider>().emailValidator(value);
} else if (RegExp(r'^\d{ 10}$').hasMatch(value)) {
return null; // Valid NISN
} else {
return 'Please enter a valid email or NISN (10 digits)';
}
}
@override
Widget build(BuildContext context) {
return GestureDetector(
@ -190,20 +174,50 @@ class _SigninScreenState extends State<SigninScreen> {
labelText: 'Email or NISN',
hintText: 'Enter Email or NISN Number',
keyboardType: TextInputType.emailAddress,
validator: _validateLogin,
validator: (value) {
validatorProvider.validateField(
'login', value?.trim(), validator: (val) {
if (val == null || val.isEmpty) {
return 'Login credential cannot be empty';
}
val = val.trim();
if (val.contains('@')) {
return validatorProvider.emailValidator(val);
} else if (RegExp(r'^\d{10}$').hasMatch(val)) {
return null; // Valid NISN
} else {
return 'Please enter a valid email or NISN (10 digits)';
}
});
return validatorProvider.getError('login');
},
onChanged: (value) =>
context.read<ValidatorProvider>().validateField(
validatorProvider.validateField(
'login',
value?.trim(),
validator: _validateLogin,
validator: (val) {
if (val == null || val.isEmpty) {
return 'Login credential cannot be empty';
}
val = val.trim();
if (val.contains('@')) {
return validatorProvider.emailValidator(val);
} else if (RegExp(r'^\d{10}$').hasMatch(val)) {
return null; // Valid NISN
} else {
return 'Please enter a valid email or NISN (10 digits)';
}
},
),
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(_passwordFocus);
},
errorText: context
.read<ValidatorProvider>()
.getError('login'),
errorText: validatorProvider.getError('login'),
),
const SizedBox(height: 14),
CustomFieldWidget(
@ -217,7 +231,12 @@ class _SigninScreenState extends State<SigninScreen> {
obscureText:
validatorProvider.isObscure('password'),
keyboardType: TextInputType.visiblePassword,
validator: validatorProvider.passwordValidator,
validator: (value) {
validatorProvider.validateField('password', value,
validator:
validatorProvider.passwordValidator);
return validatorProvider.getError('password');
},
onChanged: (value) =>
validatorProvider.validateField(
'password',