공개페이지 완료
This commit is contained in:
@@ -164,9 +164,9 @@ class BasicInfoTab extends StatelessWidget {
|
||||
return Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
||||
decoration: BoxDecoration(
|
||||
color: color.withValues(alpha: 0.15),
|
||||
color: color.withOpacity(0.15),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(color: color.withValues(alpha: 0.3)),
|
||||
border: Border.all(color: color.withOpacity(0.3)),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
|
||||
@@ -34,10 +34,12 @@ class _ParticipantsTabState extends State<ParticipantsTab> {
|
||||
|
||||
String _buildFilterSummary() {
|
||||
final parts = <String>[];
|
||||
if (_filterStatus != null && _filterStatus!.isNotEmpty)
|
||||
if (_filterStatus != null && _filterStatus!.isNotEmpty) {
|
||||
parts.add('상태: ${_filterStatus!}');
|
||||
if (_filterMemberType != null && _filterMemberType!.isNotEmpty)
|
||||
}
|
||||
if (_filterMemberType != null && _filterMemberType!.isNotEmpty) {
|
||||
parts.add('유형: ${_filterMemberType!}');
|
||||
}
|
||||
if (_filterPaid != null) parts.add('결제: ${_filterPaid! ? '완료' : '미결제'}');
|
||||
final q = _searchController.text.trim();
|
||||
if (q.isNotEmpty) parts.add("검색: '$q'");
|
||||
@@ -237,7 +239,7 @@ class _ParticipantsTabState extends State<ParticipantsTab> {
|
||||
final icon = isFemale ? Icons.female : Icons.male;
|
||||
final color = isFemale ? Colors.pink : Colors.blue;
|
||||
return CircleAvatar(
|
||||
backgroundColor: color.withValues(alpha: 0.1),
|
||||
backgroundColor: color.withOpacity(0.1),
|
||||
child: Icon(icon, size: 18, color: color),
|
||||
);
|
||||
},
|
||||
@@ -266,10 +268,10 @@ class _ParticipantsTabState extends State<ParticipantsTab> {
|
||||
vertical: 2,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.deepPurple.withValues(alpha: 0.10),
|
||||
color: Colors.deepPurple.withOpacity(0.10),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(
|
||||
color: Colors.deepPurple.withValues(alpha: 0.25),
|
||||
color: Colors.deepPurple.withOpacity(0.25),
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
@@ -290,10 +292,10 @@ class _ParticipantsTabState extends State<ParticipantsTab> {
|
||||
vertical: 2,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.indigo.withValues(alpha: 0.10),
|
||||
color: Colors.indigo.withOpacity(0.10),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(
|
||||
color: Colors.indigo.withValues(alpha: 0.25),
|
||||
color: Colors.indigo.withOpacity(0.25),
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
|
||||
@@ -93,8 +93,9 @@ class TeamsTab extends StatelessWidget {
|
||||
value: 1,
|
||||
groupValue: teamGenerationMethod,
|
||||
onChanged: (value) {
|
||||
if (value != null)
|
||||
if (value != null) {
|
||||
onChangeTeamGenerationMethod(value);
|
||||
}
|
||||
},
|
||||
),
|
||||
const Text('팀 인원수로 나누기'),
|
||||
@@ -131,8 +132,9 @@ class TeamsTab extends StatelessWidget {
|
||||
value: 2,
|
||||
groupValue: teamGenerationMethod,
|
||||
onChanged: (value) {
|
||||
if (value != null)
|
||||
if (value != null) {
|
||||
onChangeTeamGenerationMethod(value);
|
||||
}
|
||||
},
|
||||
),
|
||||
const Text('팀 개수로 나누기'),
|
||||
@@ -463,11 +465,12 @@ class TeamsTab extends StatelessWidget {
|
||||
final memberCount = team.memberIds.length;
|
||||
|
||||
return DragTarget<Map<String, dynamic>>(
|
||||
onWillAccept: (data) =>
|
||||
data != null && data['participant'] is Participant,
|
||||
onAccept: (data) {
|
||||
final Participant p = data['participant'] as Participant;
|
||||
final Team from = data['fromTeam'] as Team;
|
||||
onWillAcceptWithDetails: (details) =>
|
||||
details.data['participant'] is Participant,
|
||||
onAcceptWithDetails: (details) {
|
||||
final Participant p =
|
||||
details.data['participant'] as Participant;
|
||||
final Team from = details.data['fromTeam'] as Team;
|
||||
if (onMoveParticipant != null) {
|
||||
onMoveParticipant!(p, from, team, team.memberIds.length);
|
||||
}
|
||||
@@ -520,12 +523,12 @@ class TeamsTab extends StatelessWidget {
|
||||
children: [
|
||||
// 상단 드롭존: 리스트 맨 앞(인덱스 0)에 삽입
|
||||
DragTarget<Map<String, dynamic>>(
|
||||
onWillAccept: (data) =>
|
||||
data != null && data['participant'] is Participant,
|
||||
onAccept: (data) {
|
||||
onWillAcceptWithDetails: (details) =>
|
||||
details.data['participant'] is Participant,
|
||||
onAcceptWithDetails: (details) {
|
||||
final Participant dp =
|
||||
data['participant'] as Participant;
|
||||
final Team from = data['fromTeam'] as Team;
|
||||
details.data['participant'] as Participant;
|
||||
final Team from = details.data['fromTeam'] as Team;
|
||||
if (onMoveParticipant != null) {
|
||||
onMoveParticipant!(dp, from, team, 0);
|
||||
}
|
||||
@@ -558,13 +561,12 @@ class TeamsTab extends StatelessWidget {
|
||||
|
||||
// 행 자체를 드롭 타깃으로 만들어 해당 위치로 삽입(같은 팀 내 재정렬 및 타팀에서 특정 위치 삽입 지원)
|
||||
return DragTarget<Map<String, dynamic>>(
|
||||
onWillAccept: (data) =>
|
||||
data != null &&
|
||||
data['participant'] is Participant,
|
||||
onAccept: (data) {
|
||||
onWillAcceptWithDetails: (details) =>
|
||||
details.data['participant'] is Participant,
|
||||
onAcceptWithDetails: (details) {
|
||||
final Participant dp =
|
||||
data['participant'] as Participant;
|
||||
final Team from = data['fromTeam'] as Team;
|
||||
details.data['participant'] as Participant;
|
||||
final Team from = details.data['fromTeam'] as Team;
|
||||
if (onMoveParticipant != null) {
|
||||
onMoveParticipant!(dp, from, team, memberIndex);
|
||||
}
|
||||
@@ -624,9 +626,7 @@ class TeamsTab extends StatelessWidget {
|
||||
? Colors.pink
|
||||
: Colors.blue;
|
||||
return CircleAvatar(
|
||||
backgroundColor: color.withValues(
|
||||
alpha: 0.1,
|
||||
),
|
||||
backgroundColor: color.withOpacity(0.1),
|
||||
child: Icon(
|
||||
icon,
|
||||
size: 18,
|
||||
@@ -687,12 +687,12 @@ class TeamsTab extends StatelessWidget {
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.deepPurple
|
||||
.withValues(alpha: 0.10),
|
||||
.withOpacity(0.10),
|
||||
borderRadius:
|
||||
BorderRadius.circular(12),
|
||||
border: Border.all(
|
||||
color: Colors.deepPurple
|
||||
.withValues(alpha: 0.25),
|
||||
.withOpacity(0.25),
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
@@ -780,7 +780,7 @@ class TeamsTab extends StatelessWidget {
|
||||
: Colors.blue;
|
||||
return CircleAvatar(
|
||||
backgroundColor: color
|
||||
.withValues(alpha: 0.1),
|
||||
.withOpacity(0.1),
|
||||
child: Icon(
|
||||
icon,
|
||||
size: 18,
|
||||
@@ -1054,12 +1054,12 @@ class TeamsTab extends StatelessWidget {
|
||||
}),
|
||||
// 하단 드롭존: 리스트 맨 끝(인덱스 length)에 삽입
|
||||
DragTarget<Map<String, dynamic>>(
|
||||
onWillAccept: (data) =>
|
||||
data != null && data['participant'] is Participant,
|
||||
onAccept: (data) {
|
||||
onWillAcceptWithDetails: (details) =>
|
||||
details.data['participant'] is Participant,
|
||||
onAcceptWithDetails: (details) {
|
||||
final Participant dp =
|
||||
data['participant'] as Participant;
|
||||
final Team from = data['fromTeam'] as Team;
|
||||
details.data['participant'] as Participant;
|
||||
final Team from = details.data['fromTeam'] as Team;
|
||||
if (onMoveParticipant != null) {
|
||||
onMoveParticipant!(
|
||||
dp,
|
||||
@@ -1130,7 +1130,7 @@ class _UnassignedChip extends StatelessWidget {
|
||||
|
||||
return Chip(
|
||||
avatar: CircleAvatar(
|
||||
backgroundColor: color.withValues(alpha: 0.1),
|
||||
backgroundColor: color.withOpacity(0.1),
|
||||
child: Icon(icon, size: 16, color: color),
|
||||
),
|
||||
label: Row(
|
||||
@@ -1158,10 +1158,10 @@ class _UnassignedChip extends StatelessWidget {
|
||||
vertical: 2,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.deepPurple.withValues(alpha: 0.10),
|
||||
color: Colors.deepPurple.withOpacity(0.10),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(
|
||||
color: Colors.deepPurple.withValues(alpha: 0.25),
|
||||
color: Colors.deepPurple.withOpacity(0.25),
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
@@ -1182,10 +1182,10 @@ class _UnassignedChip extends StatelessWidget {
|
||||
vertical: 2,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.indigo.withValues(alpha: 0.10),
|
||||
color: Colors.indigo.withOpacity(0.10),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(
|
||||
color: Colors.indigo.withValues(alpha: 0.25),
|
||||
color: Colors.indigo.withOpacity(0.25),
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
|
||||
Reference in New Issue
Block a user