- schedule_view.dart에서 위젯들을 별도 파일로 분리 - widgets/member_chip.dart: MemberChip, SearchMemberChip - widgets/schedule_card.dart: ScheduleCard, AnimatedScheduleCard - widgets/search_card.dart: SearchScheduleCard - 공용 유틸 함수 분리 (decodeHtmlEntities, parseColor) - 파일 크기 2001줄 → 1440줄 (28% 감소) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
76 lines
1.9 KiB
Dart
76 lines
1.9 KiB
Dart
/// 멤버 칩 위젯
|
|
library;
|
|
|
|
import 'package:flutter/material.dart';
|
|
import '../../../core/constants.dart';
|
|
|
|
/// 멤버 칩 위젯 (일정 카드용)
|
|
class MemberChip extends StatelessWidget {
|
|
final String name;
|
|
|
|
const MemberChip({super.key, required this.name});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Container(
|
|
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
|
|
decoration: BoxDecoration(
|
|
gradient: const LinearGradient(
|
|
colors: [AppColors.primary, AppColors.primaryDark],
|
|
),
|
|
borderRadius: BorderRadius.circular(8),
|
|
boxShadow: [
|
|
BoxShadow(
|
|
color: AppColors.primary.withValues(alpha: 0.3),
|
|
blurRadius: 4,
|
|
offset: const Offset(0, 2),
|
|
),
|
|
],
|
|
),
|
|
child: Text(
|
|
name,
|
|
style: const TextStyle(
|
|
fontSize: 11,
|
|
fontWeight: FontWeight.w600,
|
|
color: Colors.white,
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
/// 검색 결과용 멤버 칩 (작은 사이즈)
|
|
class SearchMemberChip extends StatelessWidget {
|
|
final String name;
|
|
|
|
const SearchMemberChip({super.key, required this.name});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Container(
|
|
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
|
decoration: BoxDecoration(
|
|
gradient: const LinearGradient(
|
|
colors: [AppColors.primary, AppColors.primaryDark],
|
|
),
|
|
borderRadius: BorderRadius.circular(6),
|
|
boxShadow: [
|
|
BoxShadow(
|
|
color: AppColors.primary.withValues(alpha: 0.3),
|
|
blurRadius: 3,
|
|
offset: const Offset(0, 1),
|
|
),
|
|
],
|
|
),
|
|
child: Text(
|
|
name,
|
|
style: const TextStyle(
|
|
fontFamily: 'Pretendard',
|
|
fontSize: 10,
|
|
fontWeight: FontWeight.w600,
|
|
color: Colors.white,
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|