马良AI写作初始化仓库
This commit is contained in:
207
AINoval/lib/models/app_registration_config.dart
Normal file
207
AINoval/lib/models/app_registration_config.dart
Normal file
@@ -0,0 +1,207 @@
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
/// 应用注册配置
|
||||
/// 管理注册功能的开关和设置
|
||||
class AppRegistrationConfig {
|
||||
static const String _phoneRegistrationEnabledKey = 'phone_registration_enabled';
|
||||
static const String _emailRegistrationEnabledKey = 'email_registration_enabled';
|
||||
static const String _requireVerificationKey = 'require_verification';
|
||||
static const String _quickRegistrationEnabledKey = 'quick_registration_enabled';
|
||||
|
||||
// 默认配置(MVP:仅快捷注册)
|
||||
static const bool _defaultPhoneRegistrationEnabled = false; // 关闭手机注册
|
||||
static const bool _defaultEmailRegistrationEnabled = false; // 关闭邮箱注册
|
||||
static const bool _defaultRequireVerification = false; // 关闭验证码
|
||||
static const bool _defaultQuickRegistrationEnabled = true; // 开启快捷注册
|
||||
|
||||
// 缓存配置
|
||||
static bool? _cachedPhoneRegistrationEnabled;
|
||||
static bool? _cachedEmailRegistrationEnabled;
|
||||
static bool? _cachedRequireVerification;
|
||||
static bool? _cachedQuickRegistrationEnabled;
|
||||
|
||||
/// 获取是否启用快捷注册
|
||||
static Future<bool> isQuickRegistrationEnabled() async {
|
||||
if (_cachedQuickRegistrationEnabled != null) {
|
||||
return _cachedQuickRegistrationEnabled!;
|
||||
}
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
_cachedQuickRegistrationEnabled = prefs.getBool(_quickRegistrationEnabledKey) ?? _defaultQuickRegistrationEnabled;
|
||||
return _cachedQuickRegistrationEnabled!;
|
||||
}
|
||||
|
||||
/// 设置是否启用快捷注册
|
||||
static Future<void> setQuickRegistrationEnabled(bool enabled) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setBool(_quickRegistrationEnabledKey, enabled);
|
||||
_cachedQuickRegistrationEnabled = enabled;
|
||||
}
|
||||
|
||||
/// 获取是否启用手机注册
|
||||
static Future<bool> isPhoneRegistrationEnabled() async {
|
||||
if (_cachedPhoneRegistrationEnabled != null) {
|
||||
return _cachedPhoneRegistrationEnabled!;
|
||||
}
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
_cachedPhoneRegistrationEnabled = prefs.getBool(_phoneRegistrationEnabledKey) ?? _defaultPhoneRegistrationEnabled;
|
||||
return _cachedPhoneRegistrationEnabled!;
|
||||
}
|
||||
|
||||
/// 设置是否启用手机注册
|
||||
static Future<void> setPhoneRegistrationEnabled(bool enabled) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setBool(_phoneRegistrationEnabledKey, enabled);
|
||||
_cachedPhoneRegistrationEnabled = enabled;
|
||||
}
|
||||
|
||||
/// 获取是否启用邮箱注册
|
||||
static Future<bool> isEmailRegistrationEnabled() async {
|
||||
if (_cachedEmailRegistrationEnabled != null) {
|
||||
return _cachedEmailRegistrationEnabled!;
|
||||
}
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
_cachedEmailRegistrationEnabled = prefs.getBool(_emailRegistrationEnabledKey) ?? _defaultEmailRegistrationEnabled;
|
||||
return _cachedEmailRegistrationEnabled!;
|
||||
}
|
||||
|
||||
/// 设置是否启用邮箱注册
|
||||
static Future<void> setEmailRegistrationEnabled(bool enabled) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setBool(_emailRegistrationEnabledKey, enabled);
|
||||
_cachedEmailRegistrationEnabled = enabled;
|
||||
}
|
||||
|
||||
/// 获取是否需要验证
|
||||
static Future<bool> isVerificationRequired() async {
|
||||
if (_cachedRequireVerification != null) {
|
||||
return _cachedRequireVerification!;
|
||||
}
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
_cachedRequireVerification = prefs.getBool(_requireVerificationKey) ?? _defaultRequireVerification;
|
||||
return _cachedRequireVerification!;
|
||||
}
|
||||
|
||||
/// 设置是否需要验证
|
||||
static Future<void> setVerificationRequired(bool required) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setBool(_requireVerificationKey, required);
|
||||
_cachedRequireVerification = required;
|
||||
}
|
||||
|
||||
/// 获取可用的注册方式列表
|
||||
static Future<List<RegistrationMethod>> getAvailableRegistrationMethods() async {
|
||||
final List<RegistrationMethod> methods = [];
|
||||
|
||||
if (await isEmailRegistrationEnabled()) {
|
||||
methods.add(RegistrationMethod.email);
|
||||
}
|
||||
|
||||
if (await isPhoneRegistrationEnabled()) {
|
||||
methods.add(RegistrationMethod.phone);
|
||||
}
|
||||
|
||||
return methods;
|
||||
}
|
||||
|
||||
/// 检查是否至少有一种注册方式可用
|
||||
static Future<bool> hasAvailableRegistrationMethod() async {
|
||||
final methods = await getAvailableRegistrationMethods();
|
||||
return methods.isNotEmpty;
|
||||
}
|
||||
|
||||
/// 重置所有配置到默认值
|
||||
static Future<void> resetToDefaults() async {
|
||||
await setPhoneRegistrationEnabled(_defaultPhoneRegistrationEnabled);
|
||||
await setEmailRegistrationEnabled(_defaultEmailRegistrationEnabled);
|
||||
await setVerificationRequired(_defaultRequireVerification);
|
||||
await setQuickRegistrationEnabled(_defaultQuickRegistrationEnabled);
|
||||
}
|
||||
|
||||
/// 清除缓存
|
||||
static void clearCache() {
|
||||
_cachedPhoneRegistrationEnabled = null;
|
||||
_cachedEmailRegistrationEnabled = null;
|
||||
_cachedRequireVerification = null;
|
||||
_cachedQuickRegistrationEnabled = null;
|
||||
}
|
||||
}
|
||||
|
||||
/// 注册方式枚举
|
||||
enum RegistrationMethod {
|
||||
email('邮箱注册', 'email'),
|
||||
phone('手机注册', 'phone');
|
||||
|
||||
const RegistrationMethod(this.displayName, this.value);
|
||||
|
||||
final String displayName;
|
||||
final String value;
|
||||
}
|
||||
|
||||
/// 注册配置数据类
|
||||
class RegistrationConfig {
|
||||
const RegistrationConfig({
|
||||
required this.phoneRegistrationEnabled,
|
||||
required this.emailRegistrationEnabled,
|
||||
required this.verificationRequired,
|
||||
this.quickRegistrationEnabled = true,
|
||||
});
|
||||
|
||||
final bool phoneRegistrationEnabled;
|
||||
final bool emailRegistrationEnabled;
|
||||
final bool verificationRequired;
|
||||
final bool quickRegistrationEnabled;
|
||||
|
||||
/// 获取可用的注册方式
|
||||
List<RegistrationMethod> get availableMethods {
|
||||
final List<RegistrationMethod> methods = [];
|
||||
|
||||
if (emailRegistrationEnabled) {
|
||||
methods.add(RegistrationMethod.email);
|
||||
}
|
||||
|
||||
if (phoneRegistrationEnabled) {
|
||||
methods.add(RegistrationMethod.phone);
|
||||
}
|
||||
|
||||
return methods;
|
||||
}
|
||||
|
||||
/// 是否至少有一种注册方式可用
|
||||
bool get hasAvailableMethod => availableMethods.isNotEmpty;
|
||||
|
||||
/// 复制配置
|
||||
RegistrationConfig copyWith({
|
||||
bool? phoneRegistrationEnabled,
|
||||
bool? emailRegistrationEnabled,
|
||||
bool? verificationRequired,
|
||||
bool? quickRegistrationEnabled,
|
||||
}) {
|
||||
return RegistrationConfig(
|
||||
phoneRegistrationEnabled: phoneRegistrationEnabled ?? this.phoneRegistrationEnabled,
|
||||
emailRegistrationEnabled: emailRegistrationEnabled ?? this.emailRegistrationEnabled,
|
||||
verificationRequired: verificationRequired ?? this.verificationRequired,
|
||||
quickRegistrationEnabled: quickRegistrationEnabled ?? this.quickRegistrationEnabled,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
if (identical(this, other)) return true;
|
||||
return other is RegistrationConfig &&
|
||||
other.phoneRegistrationEnabled == phoneRegistrationEnabled &&
|
||||
other.emailRegistrationEnabled == emailRegistrationEnabled &&
|
||||
other.verificationRequired == verificationRequired &&
|
||||
other.quickRegistrationEnabled == quickRegistrationEnabled;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(
|
||||
phoneRegistrationEnabled,
|
||||
emailRegistrationEnabled,
|
||||
verificationRequired,
|
||||
quickRegistrationEnabled,
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user