马良AI写作初始化仓库

This commit is contained in:
邓滨杰
2025-09-10 00:07:52 +08:00
parent 3c06bb1a03
commit 39c0f8840f
1309 changed files with 318528 additions and 0 deletions

View File

@@ -0,0 +1,189 @@
part of 'ai_config_bloc.dart';
abstract class AiConfigEvent extends Equatable {
const AiConfigEvent();
@override
List<Object?> get props => [];
}
/// 加载所有配置
class LoadAiConfigs extends AiConfigEvent {
// 实际应用中应从认证状态获取
final String userId;
const LoadAiConfigs({required this.userId});
@override
List<Object?> get props => [userId];
}
/// 加载可用提供商
class LoadAvailableProviders extends AiConfigEvent {
const LoadAvailableProviders();
}
/// 加载指定提供商的模型
class LoadModelsForProvider extends AiConfigEvent {
final String provider;
const LoadModelsForProvider({required this.provider});
@override
List<Object?> get props => [provider];
}
/// 添加配置
class AddAiConfig extends AiConfigEvent {
final String userId;
final String provider;
final String modelName;
final String apiKey;
final String? alias;
final String? apiEndpoint;
const AddAiConfig({
required this.userId,
required this.provider,
required this.modelName,
required this.apiKey,
this.alias,
this.apiEndpoint,
});
@override
List<Object?> get props => [userId, provider, modelName, apiKey, alias, apiEndpoint];
}
/// 更新配置
class UpdateAiConfig extends AiConfigEvent {
final String userId;
final String configId;
final String? alias;
final String? apiKey;
final String? apiEndpoint;
const UpdateAiConfig({
required this.userId,
required this.configId,
this.alias,
this.apiKey,
this.apiEndpoint,
});
@override
List<Object?> get props => [userId, configId, alias, apiKey, apiEndpoint];
}
/// 删除配置
class DeleteAiConfig extends AiConfigEvent {
final String userId;
final String configId;
const DeleteAiConfig({required this.userId, required this.configId});
@override
List<Object?> get props => [userId, configId];
}
/// 验证配置
class ValidateAiConfig extends AiConfigEvent {
final String userId;
final String configId;
const ValidateAiConfig({required this.userId, required this.configId});
@override
List<Object?> get props => [userId, configId];
}
/// 设置默认配置
class SetDefaultAiConfig extends AiConfigEvent {
final String userId;
final String configId;
const SetDefaultAiConfig({required this.userId, required this.configId});
@override
List<Object?> get props => [userId, configId];
}
/// 清除提供商/模型列表(例如,关闭对话框时)
class ClearProviderModels extends AiConfigEvent {
const ClearProviderModels();
}
/// 获取提供商默认配置
class GetProviderDefaultConfig extends AiConfigEvent {
final String provider;
const GetProviderDefaultConfig({required this.provider});
@override
List<Object?> get props => [provider];
}
/// 加载指定配置的API密钥
class LoadApiKeyForConfig extends AiConfigEvent {
final String configId;
final ValueGetter<void> onApiKeyLoaded; // Callback to return the key
const LoadApiKeyForConfig({required this.configId, required this.onApiKeyLoaded});
@override
List<Object?> get props => [configId];
}
// --- New Events for Dynamic Loading & Validation ---
// Event to fetch the capability of a specific provider
class LoadProviderCapability extends AiConfigEvent {
final String providerName;
const LoadProviderCapability({required this.providerName});
@override
List<Object?> get props => [providerName];
}
// Event to test the API key for a specific provider
class TestApiKey extends AiConfigEvent {
final String providerName;
final String apiKey;
final String? apiEndpoint;
const TestApiKey({
required this.providerName,
required this.apiKey,
this.apiEndpoint,
});
@override
List<Object?> get props => [providerName, apiKey, apiEndpoint];
}
/// 清除API密钥测试错误状态
class ClearApiKeyTestError extends AiConfigEvent {
const ClearApiKeyTestError();
}
/// 清除模型列表缓存
class ClearModelsCache extends AiConfigEvent {
final String? provider; // 如果为null则清除所有缓存
const ClearModelsCache({this.provider});
@override
List<Object?> get props => [provider];
}
/// 添加自定义模型并立即验证
class AddCustomModelAndValidate extends AiConfigEvent {
final String userId;
final String provider;
final String modelName;
final String apiKey;
final String? alias;
final String? apiEndpoint;
const AddCustomModelAndValidate({
required this.userId,
required this.provider,
required this.modelName,
required this.apiKey,
this.alias,
this.apiEndpoint,
});
@override
List<Object?> get props => [userId, provider, modelName, apiKey, alias, apiEndpoint];
}
/// 重置AI配置状态与缓存用于登出/切换账号)
class ResetAiConfigs extends AiConfigEvent {
const ResetAiConfigs();
}