앱 전체 배경/카드 색상을 coolors 팔레트로 통일
coolors.co 무채색 팔레트(1c1c1c-daddd8-ecebe4-eef0f2-fafaff)를 lib/theme/app_palette.dart에 정의하고, 로그인/대시보드/출석 확인/ 학생 계정 관리/스마트기기 반출(신청·대장)/관리자 화면 전반의 배너·배경·카드·기본 버튼 색을 이 팔레트로 교체. 기능적으로 의미 있는 색(위반/미출석/삭제/거절 등 경고성 빨간색, 승인 대기 등 상태 표시)은 그대로 유지 — 구조적/장식적 색상만 무채색으로 통일해 위험한 동작이 시각적으로 더 도드라지게 함. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ import 'package:desktop_drop/desktop_drop.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import '../function/excel_file_picker.dart';
|
||||
import '../function/teacher_student_management_controller.dart';
|
||||
import '../theme/app_palette.dart';
|
||||
|
||||
// 📐 "실시간 출석 확인" 목록(teacher_attendance_page.dart)의 타일 규격과 동일하게 맞춘다.
|
||||
const double kAttendanceTileWidth = 220;
|
||||
@@ -162,8 +163,8 @@ class _TeacherStudentManagementPageState
|
||||
_runBulkImport(rows);
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Colors.orange,
|
||||
foregroundColor: Colors.white,
|
||||
backgroundColor: AppPalette.ink,
|
||||
foregroundColor: AppPalette.paper,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
@@ -295,7 +296,7 @@ class _TeacherStudentManagementPageState
|
||||
builder: (ctx) => AlertDialog(
|
||||
title: const Text(
|
||||
'⚠️ 기기 등록 초기화',
|
||||
style: TextStyle(fontWeight: FontWeight.bold, color: Colors.purple),
|
||||
style: TextStyle(fontWeight: FontWeight.bold, color: AppPalette.ink),
|
||||
),
|
||||
content: Text('$studentName 학생의 스마트폰 기기 등록과 비밀번호(1234)를 초기화하시겠습니까?'),
|
||||
actions: [
|
||||
@@ -305,8 +306,8 @@ class _TeacherStudentManagementPageState
|
||||
),
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Colors.purple,
|
||||
foregroundColor: Colors.white,
|
||||
backgroundColor: AppPalette.ink,
|
||||
foregroundColor: AppPalette.paper,
|
||||
),
|
||||
onPressed: () async {
|
||||
Navigator.pop(ctx);
|
||||
@@ -373,7 +374,7 @@ class _TeacherStudentManagementPageState
|
||||
}
|
||||
|
||||
// 🏷️ 섹션 제목 (색 인디케이터 바 + 텍스트).
|
||||
Widget _sectionTitle(String text, {Color color = Colors.orange}) {
|
||||
Widget _sectionTitle(String text, {Color color = AppPalette.ink}) {
|
||||
return Row(
|
||||
children: [
|
||||
Container(
|
||||
@@ -400,8 +401,9 @@ class _TeacherStudentManagementPageState
|
||||
return Container(
|
||||
padding: const EdgeInsets.all(10),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
color: AppPalette.paper,
|
||||
borderRadius: BorderRadius.circular(24),
|
||||
border: Border.all(color: AppPalette.sage),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black.withValues(alpha: 0.04),
|
||||
@@ -458,8 +460,8 @@ class _TeacherStudentManagementPageState
|
||||
child: ElevatedButton(
|
||||
onPressed: _controller.isWorking ? null : _addStudentAccount,
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Colors.orange,
|
||||
foregroundColor: Colors.white,
|
||||
backgroundColor: AppPalette.ink,
|
||||
foregroundColor: AppPalette.paper,
|
||||
padding: EdgeInsets.zero,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
@@ -519,10 +521,10 @@ class _TeacherStudentManagementPageState
|
||||
height: double.infinity,
|
||||
padding: const EdgeInsets.all(20),
|
||||
decoration: BoxDecoration(
|
||||
color: _isDragging ? Colors.orange[50] : Colors.white,
|
||||
color: _isDragging ? Colors.orange[50] : AppPalette.paper,
|
||||
borderRadius: BorderRadius.circular(24),
|
||||
border: Border.all(
|
||||
color: _isDragging ? Colors.orange : Colors.grey.shade300,
|
||||
color: _isDragging ? Colors.orange : AppPalette.sage,
|
||||
width: _isDragging ? 2 : 1,
|
||||
),
|
||||
),
|
||||
@@ -532,7 +534,7 @@ class _TeacherStudentManagementPageState
|
||||
Icon(
|
||||
Icons.upload_file_rounded,
|
||||
size: 40,
|
||||
color: _isDragging ? Colors.orange : Colors.grey[400],
|
||||
color: _isDragging ? Colors.orange : AppPalette.sage,
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Text(
|
||||
@@ -540,7 +542,7 @@ class _TeacherStudentManagementPageState
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: _isDragging ? Colors.orange[800] : Colors.black87,
|
||||
color: _isDragging ? Colors.orange[800] : AppPalette.ink,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
@@ -566,8 +568,9 @@ class _TeacherStudentManagementPageState
|
||||
return Container(
|
||||
padding: const EdgeInsets.all(14),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
color: AppPalette.paper,
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
border: Border.all(color: AppPalette.sage),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black.withValues(alpha: 0.03),
|
||||
@@ -583,15 +586,15 @@ class _TeacherStudentManagementPageState
|
||||
Container(
|
||||
padding: const EdgeInsets.all(8),
|
||||
decoration: BoxDecoration(
|
||||
color: (needsReset ? Colors.red : Colors.blue).withValues(
|
||||
alpha: 0.1,
|
||||
),
|
||||
color: needsReset
|
||||
? Colors.red.withValues(alpha: 0.1)
|
||||
: AppPalette.linen,
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: Icon(
|
||||
needsReset ? Icons.lock_reset : Icons.person,
|
||||
size: 18,
|
||||
color: needsReset ? Colors.red : Colors.blue,
|
||||
color: needsReset ? Colors.red : AppPalette.ink,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
@@ -638,7 +641,7 @@ class _TeacherStudentManagementPageState
|
||||
IconButton(
|
||||
icon: const Icon(
|
||||
Icons.lock_reset,
|
||||
color: Colors.purple,
|
||||
color: AppPalette.ink,
|
||||
size: 18,
|
||||
),
|
||||
tooltip: '기기 리셋',
|
||||
@@ -670,14 +673,14 @@ class _TeacherStudentManagementPageState
|
||||
listenable: _controller,
|
||||
builder: (context, _) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.grey[100],
|
||||
backgroundColor: AppPalette.mist,
|
||||
appBar: AppBar(
|
||||
title: const Text(
|
||||
'⚙️ 학생 통합 관리 센터',
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
backgroundColor: Colors.orange,
|
||||
foregroundColor: Colors.white,
|
||||
backgroundColor: AppPalette.ink,
|
||||
foregroundColor: AppPalette.paper,
|
||||
elevation: 0,
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
@@ -748,7 +751,7 @@ class _TeacherStudentManagementPageState
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
_sectionTitle('전체 학생 목록', color: Colors.blue),
|
||||
_sectionTitle('전체 학생 목록'),
|
||||
const Spacer(),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.refresh_rounded),
|
||||
|
||||
Reference in New Issue
Block a user