실시간 출석 현황: 제목 알약을 앱바에서 사이드바 상단으로 이동

앱바 가운데 제목 대신, "전체 학생 수" 버튼 바로 위(사이드바 최상단)에
제목 알약을 두도록 변경. 모바일도 요약 카드 위로 동일하게 이동.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-08 09:38:56 +09:00
co-authored by Claude Sonnet 5
parent 20f751b65e
commit 32203baffc
+27 -18
View File
@@ -205,29 +205,13 @@ class _TeacherAttendancePageState extends State<TeacherAttendancePage> {
return Scaffold( return Scaffold(
backgroundColor: AppPalette.mist, backgroundColor: AppPalette.mist,
// 🪶 검정 배너 대신 가운데에 둥근 제목 알약만 띄우고, 나머지 기능은 전부 // 🪶 검정 배너 대신, 제목 알약은 "전체 학생 수" 버튼 바로 위(사이드바/모바일 요약 위)에 둔다.
// "자습실 시간 설정 메뉴"(런치패드 스타일 오버레이) 하나로 모은다. // 나머지 기능은 전부 "자습실 시간 설정 메뉴"(런치패드 스타일 오버레이) 하나로 모은다.
// 폰에서는 사이드바가 없으니 여기 아이콘으로도 같은 메뉴를 열 수 있게 둔다. // 폰에서는 사이드바가 없으니 여기 아이콘으로도 같은 메뉴를 열 수 있게 둔다.
appBar: AppBar( appBar: AppBar(
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
foregroundColor: AppPalette.ink, foregroundColor: AppPalette.ink,
elevation: 0, elevation: 0,
centerTitle: true,
title: Container(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
decoration: BoxDecoration(
color: AppPalette.ink,
borderRadius: BorderRadius.circular(999),
),
child: const Text(
'실시간 출석 현황',
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 15,
),
),
),
actions: [ actions: [
IconButton( IconButton(
icon: const Icon(Icons.more_horiz_rounded), icon: const Icon(Icons.more_horiz_rounded),
@@ -260,6 +244,26 @@ class _TeacherAttendancePageState extends State<TeacherAttendancePage> {
); );
} }
// 🪶 "실시간 출석 현황" 제목 알약. 사이드바/모바일 요약 바로 위에 둔다.
Widget _buildTitlePill() {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
decoration: BoxDecoration(
color: AppPalette.ink,
borderRadius: BorderRadius.circular(999),
),
child: const Text(
'실시간 출석 현황',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 15,
),
),
);
}
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// 📱 모바일 레이아웃 (기존 카드 리스트) // 📱 모바일 레이아웃 (기존 카드 리스트)
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
@@ -267,6 +271,9 @@ class _TeacherAttendancePageState extends State<TeacherAttendancePage> {
final groups = _controller.studentsByGrade; final groups = _controller.studentsByGrade;
return Column( return Column(
children: [ children: [
const SizedBox(height: 12),
_buildTitlePill(),
const SizedBox(height: 12),
_buildSummaryCards(total, checkedIn, absent), _buildSummaryCards(total, checkedIn, absent),
_buildPermissionBanner(), _buildPermissionBanner(),
_buildFilterChips(), _buildFilterChips(),
@@ -530,6 +537,8 @@ class _TeacherAttendancePageState extends State<TeacherAttendancePage> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
Center(child: _buildTitlePill()),
const SizedBox(height: 16),
_sidebarStatPill('전체 학생 수', total, 'ALL'), _sidebarStatPill('전체 학생 수', total, 'ALL'),
const SizedBox(height: 10), const SizedBox(height: 10),
_sidebarStatPill('출석 학생 수', checkedIn, 'CHECKED_IN'), _sidebarStatPill('출석 학생 수', checkedIn, 'CHECKED_IN'),