马良AI写作初始化仓库
This commit is contained in:
62
AINoval/lib/blocs/public_models/public_models_bloc.dart
Normal file
62
AINoval/lib/blocs/public_models/public_models_bloc.dart
Normal file
@@ -0,0 +1,62 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
import '../../models/public_model_config.dart';
|
||||
import '../../services/api_service/repositories/public_model_repository.dart';
|
||||
import '../../utils/logger.dart';
|
||||
|
||||
part 'public_models_event.dart';
|
||||
part 'public_models_state.dart';
|
||||
|
||||
/// 公共模型BLoC
|
||||
/// 负责管理公共模型池的状态和数据获取
|
||||
class PublicModelsBloc extends Bloc<PublicModelsEvent, PublicModelsState> {
|
||||
final PublicModelRepository _repository;
|
||||
static const String _tag = 'PublicModelsBloc';
|
||||
|
||||
PublicModelsBloc({required PublicModelRepository repository})
|
||||
: _repository = repository,
|
||||
super(const PublicModelsInitial()) {
|
||||
on<LoadPublicModels>(_onLoadPublicModels);
|
||||
on<RefreshPublicModels>(_onRefreshPublicModels);
|
||||
}
|
||||
|
||||
/// 处理加载公共模型列表事件
|
||||
Future<void> _onLoadPublicModels(
|
||||
LoadPublicModels event,
|
||||
Emitter<PublicModelsState> emit,
|
||||
) async {
|
||||
emit(const PublicModelsLoading());
|
||||
await _loadModels(emit);
|
||||
}
|
||||
|
||||
/// 处理刷新公共模型列表事件
|
||||
Future<void> _onRefreshPublicModels(
|
||||
RefreshPublicModels event,
|
||||
Emitter<PublicModelsState> emit,
|
||||
) async {
|
||||
// 刷新不显示loading状态,保持当前显示
|
||||
await _loadModels(emit);
|
||||
}
|
||||
|
||||
/// 加载模型列表的公共方法
|
||||
Future<void> _loadModels(Emitter<PublicModelsState> emit) async {
|
||||
try {
|
||||
AppLogger.i(_tag, '开始加载公共模型列表');
|
||||
final models = await _repository.getPublicModels();
|
||||
|
||||
// 按优先级排序,优先级高的在前
|
||||
models.sort((a, b) {
|
||||
final aPriority = a.priority ?? 0;
|
||||
final bPriority = b.priority ?? 0;
|
||||
return bPriority.compareTo(aPriority);
|
||||
});
|
||||
|
||||
AppLogger.i(_tag, '公共模型列表加载成功: 共${models.length}个模型');
|
||||
emit(PublicModelsLoaded(models: models));
|
||||
} catch (e, stackTrace) {
|
||||
AppLogger.e(_tag, '加载公共模型列表失败', e, stackTrace);
|
||||
emit(PublicModelsError(message: '加载公共模型列表失败: ${e.toString()}'));
|
||||
}
|
||||
}
|
||||
}
|
||||
19
AINoval/lib/blocs/public_models/public_models_event.dart
Normal file
19
AINoval/lib/blocs/public_models/public_models_event.dart
Normal file
@@ -0,0 +1,19 @@
|
||||
part of 'public_models_bloc.dart';
|
||||
|
||||
/// 公共模型事件基类
|
||||
abstract class PublicModelsEvent extends Equatable {
|
||||
const PublicModelsEvent();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
/// 加载公共模型列表事件
|
||||
class LoadPublicModels extends PublicModelsEvent {
|
||||
const LoadPublicModels();
|
||||
}
|
||||
|
||||
/// 刷新公共模型列表事件
|
||||
class RefreshPublicModels extends PublicModelsEvent {
|
||||
const RefreshPublicModels();
|
||||
}
|
||||
48
AINoval/lib/blocs/public_models/public_models_state.dart
Normal file
48
AINoval/lib/blocs/public_models/public_models_state.dart
Normal file
@@ -0,0 +1,48 @@
|
||||
part of 'public_models_bloc.dart';
|
||||
|
||||
/// 公共模型状态基类
|
||||
abstract class PublicModelsState extends Equatable {
|
||||
const PublicModelsState();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
/// 公共模型初始状态
|
||||
class PublicModelsInitial extends PublicModelsState {
|
||||
const PublicModelsInitial();
|
||||
}
|
||||
|
||||
/// 公共模型加载中状态
|
||||
class PublicModelsLoading extends PublicModelsState {
|
||||
const PublicModelsLoading();
|
||||
}
|
||||
|
||||
/// 公共模型加载成功状态
|
||||
class PublicModelsLoaded extends PublicModelsState {
|
||||
final List<PublicModel> models;
|
||||
|
||||
const PublicModelsLoaded({required this.models});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [models];
|
||||
|
||||
/// 创建副本,用于更新状态
|
||||
PublicModelsLoaded copyWith({
|
||||
List<PublicModel>? models,
|
||||
}) {
|
||||
return PublicModelsLoaded(
|
||||
models: models ?? this.models,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// 公共模型加载失败状态
|
||||
class PublicModelsError extends PublicModelsState {
|
||||
final String message;
|
||||
|
||||
const PublicModelsError({required this.message});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [message];
|
||||
}
|
||||
Reference in New Issue
Block a user