| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- // 表单校验工具函数
- /// 邮箱格式校验
- String? validateEmail(String? value) {
- if (value == null || value.isEmpty) return '请输入邮箱地址';
- final emailRegex = RegExp(r'^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$');
- if (!emailRegex.hasMatch(value)) return '邮箱格式不正确';
- return null;
- }
- /// 密码校验(最少 6 位)
- String? validatePassword(String? value) {
- if (value == null || value.isEmpty) return '请输入密码';
- if (value.length < 6) return '密码至少 6 位';
- return null;
- }
- /// 确认密码校验
- String? validateConfirmPassword(String? value, String original) {
- if (value == null || value.isEmpty) return '请确认密码';
- if (value != original) return '两次密码不一致';
- return null;
- }
- /// 金额校验
- String? validateAmount(String? value, {double? max}) {
- if (value == null || value.isEmpty) return '请输入金额';
- final amount = double.tryParse(value);
- if (amount == null || amount <= 0) return '请输入有效金额';
- if (max != null && amount > max) return '超出可用余额';
- return null;
- }
- /// 加密地址校验(基础非空校验)
- String? validateAddress(String? value) {
- if (value == null || value.isEmpty) return '请输入提币地址';
- if (value.length < 20) return '地址格式不正确';
- return null;
- }
- /// 密码强度(0-3)
- int passwordStrength(String password) {
- if (password.isEmpty) return 0;
- int score = 0;
- if (password.length >= 8) score++;
- if (RegExp(r'[A-Z]').hasMatch(password)) score++;
- if (RegExp(r'[0-9]').hasMatch(password)) score++;
- if (RegExp(r'[!@#\$%^&*]').hasMatch(password)) score++;
- return score.clamp(0, 3);
- }
|