이벤트 가져오기 위젯 테스트 추가 및 테스트 훅 도입

This commit is contained in:
2025-09-12 06:33:44 +09:00
parent 107abc963f
commit a5f2544d11
121 changed files with 39277 additions and 3911 deletions
+29 -10
View File
@@ -8,6 +8,7 @@ import '../../services/member_service.dart';
import '../../services/event_service.dart';
import '../../models/club_model.dart';
import 'club_settings_screen.dart';
import '../../theme/badges.dart';
class DashboardScreen extends StatefulWidget {
const DashboardScreen({super.key});
@@ -34,10 +35,15 @@ class _DashboardScreenState extends State<DashboardScreen> {
_isLoading = true;
});
// await 이전에 messenger 캡처 (catch에서 사용)
final messenger = ScaffoldMessenger.of(context);
// await 이전에 서비스 인스턴스 캡처
final authService = Provider.of<AuthService>(context, listen: false);
final clubService = Provider.of<ClubService>(context, listen: false);
final memberService = Provider.of<MemberService>(context, listen: false);
final eventService = Provider.of<EventService>(context, listen: false);
try {
final authService = Provider.of<AuthService>(context, listen: false);
final clubService = Provider.of<ClubService>(context, listen: false);
// 클럽 정보 로드
if (clubService.currentClub == null) {
await clubService.initialize(authService.token!);
@@ -45,9 +51,6 @@ class _DashboardScreenState extends State<DashboardScreen> {
// 회원 및 이벤트 서비스 초기화
if (clubService.currentClub != null) {
final memberService = Provider.of<MemberService>(context, listen: false);
final eventService = Provider.of<EventService>(context, listen: false);
memberService.initialize(authService.token!);
eventService.initialize(authService.token!);
@@ -59,13 +62,15 @@ class _DashboardScreenState extends State<DashboardScreen> {
}
} catch (e) {
// 오류 처리
ScaffoldMessenger.of(context).showSnackBar(
messenger.showSnackBar(
SnackBar(content: Text('데이터 로드 중 오류가 발생했습니다: $e')),
);
} finally {
setState(() {
_isLoading = false;
});
if (mounted) {
setState(() {
_isLoading = false;
});
}
}
}
@@ -364,11 +369,23 @@ class _DashboardScreenState extends State<DashboardScreen> {
style: const TextStyle(
fontWeight: FontWeight.bold,
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 4),
if (event.status != null) ...[
Wrap(
spacing: 4,
runSpacing: 4,
children: [
BadgeStyles.eventStatus(event.status!),
],
),
const SizedBox(height: 4),
],
Text(
dateFormat.format(event.startDate),
style: TextStyle(
@@ -381,6 +398,8 @@ class _DashboardScreenState extends State<DashboardScreen> {
style: TextStyle(
color: Colors.grey[600],
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
],
),