diff --git a/lib/ui/main_dashboard.dart b/lib/ui/main_dashboard.dart index 3511da3..2703cc9 100644 --- a/lib/ui/main_dashboard.dart +++ b/lib/ui/main_dashboard.dart @@ -24,6 +24,7 @@ import 'launchpad_transition.dart'; import 'login_screen.dart'; import 'nfc_poccket_checkin_screen.dart'; import 'nfc_tag_writer_screen.dart'; +import 'profile_customize_screen.dart'; import 'study_calendar_screen.dart'; import 'study_timer_screen.dart'; import 'teacher_attendance_page.dart'; @@ -632,72 +633,104 @@ class _MainDashboardState extends State { // πŸͺͺ μž‘μ€ ν”„λ‘œν•„ μΉ΄λ“œλ‘œ 배치 β€” ν™”λ©΄ 전체λ₯Ό μ°¨μ§€ν•˜λ˜ λ°°λ„ˆ λŒ€μ‹  // κ°€μš΄λ°μ— λ–  μžˆλŠ” μΉ΄λ“œ ν•˜λ‚˜λ§Œ λ‘”λ‹€. Center( - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 28, - vertical: 18, - ), - decoration: BoxDecoration( - color: theme.color, - borderRadius: BorderRadius.circular(24), - boxShadow: [ - BoxShadow( - color: theme.color.withValues(alpha: 0.25), - blurRadius: 16, - offset: const Offset(0, 6), + child: Stack( + clipBehavior: Clip.none, + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 28, + vertical: 18, ), - ], - ), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - theme.title, - style: const TextStyle( - fontWeight: FontWeight.bold, - letterSpacing: 1.2, - color: Colors.white, - fontSize: 13, - ), + decoration: BoxDecoration( + color: theme.color, + borderRadius: BorderRadius.circular(24), + boxShadow: [ + BoxShadow( + color: theme.color.withValues(alpha: 0.25), + blurRadius: 16, + offset: const Offset(0, 6), + ), + ], ), - const SizedBox(height: 10), - Container( - padding: const EdgeInsets.all(4), - decoration: const BoxDecoration( - color: Colors.white, - shape: BoxShape.circle, - ), - child: CircleAvatar( - radius: 22, - backgroundColor: AppPalette.linen, - child: Icon( - theme.icon, - size: 22, - color: theme.color, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + theme.title, + style: const TextStyle( + fontWeight: FontWeight.bold, + letterSpacing: 1.2, + color: Colors.white, + fontSize: 13, + ), + ), + const SizedBox(height: 10), + Container( + padding: const EdgeInsets.all(4), + decoration: const BoxDecoration( + color: Colors.white, + shape: BoxShape.circle, + ), + child: CircleAvatar( + radius: 22, + backgroundColor: AppPalette.linen, + child: Icon( + theme.icon, + size: 22, + color: theme.color, + ), + ), + ), + const SizedBox(height: 10), + Text( + '$_displayName λ‹˜', + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + const SizedBox(height: 3), + Text( + theme.subtitle, + textAlign: TextAlign.center, + style: TextStyle( + color: Colors.white.withValues(alpha: 0.8), + fontSize: 12, + ), + ), + ], + ), + ), + Positioned( + top: -6, + right: -6, + child: Material( + color: AppPalette.paper, + shape: const CircleBorder(), + elevation: 2, + child: InkWell( + customBorder: const CircleBorder(), + onTap: () => pushLaunchpad( + context, + (context) => ProfileCustomizeScreen( + studentId: _displayId, + studentName: _displayName, + ), + ), + child: const Padding( + padding: EdgeInsets.all(8), + child: Icon( + Icons.edit_rounded, + size: 16, + color: AppPalette.ink, + ), ), ), ), - const SizedBox(height: 10), - Text( - '$_displayName λ‹˜', - textAlign: TextAlign.center, - style: const TextStyle( - fontSize: 17, - fontWeight: FontWeight.bold, - color: Colors.white, - ), - ), - const SizedBox(height: 3), - Text( - theme.subtitle, - textAlign: TextAlign.center, - style: TextStyle( - color: Colors.white.withValues(alpha: 0.8), - fontSize: 12, - ), - ), - ], - ), + ), + ], ), ), const SizedBox(height: 28), diff --git a/lib/ui/profile_customize_screen.dart b/lib/ui/profile_customize_screen.dart new file mode 100644 index 0000000..f446b50 --- /dev/null +++ b/lib/ui/profile_customize_screen.dart @@ -0,0 +1,56 @@ +// 🎨 ν”„λ‘œν•„ μ»€μŠ€ν…€ ν™”λ©΄ (UI μ „μš©). 아직은 자리만 μž‘μ•„λ‘” 빈 ν™”λ©΄ - ν”„λ‘œν•„ κΎΈλ―ΈκΈ° +// κ΄€λ ¨ κΈ°λŠ₯듀이 여기에 ν•˜λ‚˜μ”© 좔가될 μ˜ˆμ •μ΄λ‹€. +import 'package:flutter/material.dart'; +import '../theme/app_palette.dart'; +import 'title_pill.dart'; + +class ProfileCustomizeScreen extends StatelessWidget { + final String studentId; + final String studentName; + + const ProfileCustomizeScreen({ + super.key, + required this.studentId, + required this.studentName, + }); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppPalette.mist, + appBar: AppBar( + backgroundColor: Colors.transparent, + foregroundColor: AppPalette.ink, + elevation: 0, + centerTitle: true, + title: const TitlePill('ν”„λ‘œν•„ κΎΈλ―ΈκΈ°'), + ), + body: Center( + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon( + Icons.auto_awesome_rounded, + size: 48, + color: AppPalette.ink, + ), + const SizedBox(height: 16), + const Text( + 'κ³§ λ‹€μ–‘ν•œ ν”„λ‘œν•„ μ»€μŠ€ν…€ κΈ°λŠ₯이 좔가될 μ˜ˆμ •μ΄μ—μš”.', + textAlign: TextAlign.center, + style: TextStyle(fontWeight: FontWeight.bold, fontSize: 15), + ), + const SizedBox(height: 6), + Text( + '$studentName ($studentId)', + style: const TextStyle(color: Colors.grey), + ), + ], + ), + ), + ), + ); + } +}