이벤트 개발완료
This commit is contained in:
@@ -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,
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user