feat(apps): 重构 UI 架构为 presentation 层并新增 l10n 国际化支持
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import 'package:formz/formz.dart';
|
||||
import '../../core/l10n/l10n.dart';
|
||||
|
||||
class Username extends FormzInput<String, String> {
|
||||
const Username.pure() : super.pure('');
|
||||
const Username.dirty([super.value = '']) : super.dirty();
|
||||
|
||||
@override
|
||||
String? validator(String value) {
|
||||
if (value.isEmpty) return L10n.current.inputUsernameRequired;
|
||||
if (value.length < 3) return L10n.current.inputUsernameMin;
|
||||
if (value.length > 30) return L10n.current.inputUsernameMax;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
class Phone extends FormzInput<String, String> {
|
||||
const Phone.pure() : super.pure('');
|
||||
const Phone.dirty([super.value = '']) : super.dirty();
|
||||
|
||||
static final _regex = RegExp(r'^\d{7,14}$');
|
||||
|
||||
@override
|
||||
String? validator(String value) {
|
||||
final normalized = value.replaceAll(RegExp(r'\s+'), '');
|
||||
if (normalized.isEmpty) return L10n.current.inputPhoneRequired;
|
||||
if (!_regex.hasMatch(normalized)) return L10n.current.inputPhoneInvalid;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
class Password extends FormzInput<String, String> {
|
||||
const Password.pure() : super.pure('');
|
||||
const Password.dirty([super.value = '']) : super.dirty();
|
||||
|
||||
@override
|
||||
String? validator(String value) {
|
||||
if (value.isEmpty) return L10n.current.inputPasswordRequired;
|
||||
if (value.length < 6) return L10n.current.inputPasswordMin;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
class VerificationCode extends FormzInput<String, String> {
|
||||
const VerificationCode.pure() : super.pure('');
|
||||
const VerificationCode.dirty([super.value = '']) : super.dirty();
|
||||
|
||||
@override
|
||||
String? validator(String value) {
|
||||
if (value.isEmpty) return L10n.current.inputCodeRequired;
|
||||
if (!RegExp(r'^\d{6}$').hasMatch(value)) {
|
||||
return L10n.current.inputCodeInvalid;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user