// 表单校验工具函数 /// 邮箱格式校验 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); }