马良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,65 @@
import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../models/user_credit.dart';
import '../../services/api_service/repositories/credit_repository.dart';
import '../../utils/logger.dart';
part 'credit_event.dart';
part 'credit_state.dart';
/// 用户积分BLoC
/// 负责管理用户积分状态和数据获取
class CreditBloc extends Bloc<CreditEvent, CreditState> {
final CreditRepository _repository;
static const String _tag = 'CreditBloc';
CreditBloc({required CreditRepository repository})
: _repository = repository,
super(const CreditInitial()) {
on<LoadUserCredits>(_onLoadUserCredits);
on<RefreshUserCredits>(_onRefreshUserCredits);
on<ClearCredits>(_onClearCredits);
}
/// 处理加载用户积分事件
Future<void> _onLoadUserCredits(
LoadUserCredits event,
Emitter<CreditState> emit,
) async {
emit(const CreditLoading());
await _loadCredits(emit);
}
/// 处理刷新用户积分事件
Future<void> _onRefreshUserCredits(
RefreshUserCredits event,
Emitter<CreditState> emit,
) async {
// 刷新不显示loading状态保持当前显示
await _loadCredits(emit);
}
/// 处理清空用户积分事件
Future<void> _onClearCredits(
ClearCredits event,
Emitter<CreditState> emit,
) async {
AppLogger.i(_tag, '清空用户积分状态,重置为初始状态');
emit(const CreditInitial());
}
/// 加载积分的公共方法
Future<void> _loadCredits(Emitter<CreditState> emit) async {
try {
AppLogger.i(_tag, '开始加载用户积分');
final userCredit = await _repository.getUserCredits();
AppLogger.i(_tag, '用户积分加载成功: ${userCredit.credits}');
emit(CreditLoaded(userCredit: userCredit));
} catch (e, stackTrace) {
AppLogger.e(_tag, '加载用户积分失败', e, stackTrace);
emit(CreditError(message: '加载用户积分失败: ${e.toString()}'));
}
}
}

View File

@@ -0,0 +1,24 @@
part of 'credit_bloc.dart';
/// 积分事件基类
abstract class CreditEvent extends Equatable {
const CreditEvent();
@override
List<Object?> get props => [];
}
/// 加载用户积分事件
class LoadUserCredits extends CreditEvent {
const LoadUserCredits();
}
/// 刷新用户积分事件
class RefreshUserCredits extends CreditEvent {
const RefreshUserCredits();
}
/// 清空用户积分状态事件(用于退出登录时重置为游客状态)
class ClearCredits extends CreditEvent {
const ClearCredits();
}

View File

@@ -0,0 +1,48 @@
part of 'credit_bloc.dart';
/// 积分状态基类
abstract class CreditState extends Equatable {
const CreditState();
@override
List<Object?> get props => [];
}
/// 积分初始状态
class CreditInitial extends CreditState {
const CreditInitial();
}
/// 积分加载中状态
class CreditLoading extends CreditState {
const CreditLoading();
}
/// 积分加载成功状态
class CreditLoaded extends CreditState {
final UserCredit userCredit;
const CreditLoaded({required this.userCredit});
@override
List<Object?> get props => [userCredit];
/// 创建副本
CreditLoaded copyWith({
UserCredit? userCredit,
}) {
return CreditLoaded(
userCredit: userCredit ?? this.userCredit,
);
}
}
/// 积分加载失败状态
class CreditError extends CreditState {
final String message;
const CreditError({required this.message});
@override
List<Object?> get props => [message];
}