이벤트 개발완료

This commit is contained in:
2025-10-23 22:04:03 +09:00
parent ce1aee67d6
commit cd0e139b5e
48 changed files with 7855 additions and 3459 deletions
+45 -19
View File
@@ -84,6 +84,16 @@ class _MembersScreenState extends State<MembersScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('회원'),
actions: [
IconButton(
tooltip: '회원 추가',
icon: const Icon(Icons.person_add),
onPressed: _showAddMemberDialog,
),
],
),
body: Column(
children: [
// 검색 바
@@ -154,14 +164,7 @@ class _MembersScreenState extends State<MembersScreen> {
),
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {
// 회원 추가 화면으로 이동 (추후 구현)
_showAddMemberDialog();
},
backgroundColor: Colors.blue,
child: const Icon(Icons.add, color: Colors.white),
),
// FAB 제거: AppBar actions로 이동
);
}
@@ -223,6 +226,24 @@ class _MembersScreenState extends State<MembersScreen> {
),
),
),
// 평균
if (member.average != null)
Container(
margin: const EdgeInsets.only(left: 8),
padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 2),
decoration: BoxDecoration(
color: Colors.indigo.shade100,
borderRadius: BorderRadius.circular(12),
),
child: Text(
'AVG ${member.average!.toStringAsFixed(1)}',
style: TextStyle(
fontSize: 12,
color: Colors.indigo.shade800,
fontWeight: FontWeight.w700,
),
),
),
],
),
if (member.email.isNotEmpty || member.phone != null)
@@ -249,26 +270,31 @@ class _MembersScreenState extends State<MembersScreen> {
overflow: TextOverflow.ellipsis,
),
const SizedBox(height: 4),
// 2열: 모든 뱃지
Wrap(
spacing: 8,
runSpacing: 4,
crossAxisAlignment: WrapCrossAlignment.center,
children: [
// 회원 유형 배지 (공통 스타일 적용)
// 회원 유형 배지
BadgeStyles.memberType(memberTypeText),
// 가입일 표시
if (member.joinDate != null)
Text(
'가입: ${formatDate(member.joinDate!)}',
style: TextStyle(
fontSize: 12,
color: Colors.grey.shade600,
),
),
// 상태 표시 (공통 배지 적용)
// 상태 배지
BadgeStyles.memberStatus(getStatusLabel(member.status)),
],
),
// 3열: 가입일
if (member.joinDate != null) ...[
const SizedBox(height: 4),
Text(
'가입: ${formatDate(member.joinDate!)}',
style: TextStyle(
fontSize: 12,
color: Colors.grey.shade600,
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
],
],
),
),