attendence screen is fixed

This commit is contained in:
Daniah Ayad Al-sultani
2025-12-02 13:11:11 +03:00
parent 2ac504754e
commit 5c48fc280c
4 changed files with 211 additions and 18 deletions

4
assets/images/login.svg Normal file
View File

@@ -0,0 +1,4 @@
<svg width="81" height="81" viewBox="0 0 81 81" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M59.0625 59.5015V64.0004M59.0625 64.0004V68.4992M59.0625 64.0004H63.5614M59.0625 64.0004H54.5636M72.5625 64.0004C72.5625 67.5808 71.1402 71.0146 68.6084 73.5463C66.0767 76.078 62.6429 77.5004 59.0625 77.5004C55.4821 77.5004 52.0483 76.078 49.5166 73.5463C46.9848 71.0146 45.5625 67.5808 45.5625 64.0004C45.5625 60.4199 46.9848 56.9862 49.5166 54.4544C52.0483 51.9227 55.4821 50.5004 59.0625 50.5004C62.6429 50.5004 66.0767 51.9227 68.6084 54.4544C71.1402 56.9862 72.5625 60.4199 72.5625 64.0004Z" stroke="black" stroke-width="3" stroke-linecap="round"/>
<path d="M20.0104 72.7957C13.014 68.0436 8.4375 60.1461 8.4375 51.2091V36.1836C8.4375 32.1843 9.35212 28.3941 10.9924 24.9989M31.5799 77.2439C34.5467 77.6549 37.5612 77.5693 40.5 76.9908M59.8387 24.9111C52.7715 10.4189 33.4125 5.49139 20.0137 14.5971M62.4375 38.1243V42.0629M35.4375 23.5004C42.8963 23.5004 48.9375 29.8454 48.9375 37.6754M23.2369 31.6004C22.3803 33.5111 21.9375 35.5814 21.9375 37.6754V49.8254C21.9375 57.6554 27.9787 64.0004 35.4375 64.0004C36.0113 64.0004 36.5738 63.9644 37.125 63.8924M35.4375 38.6879V48.8129" stroke="black" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

4
assets/images/logout.svg Normal file
View File

@@ -0,0 +1,4 @@
<svg width="81" height="81" viewBox="0 0 81 81" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20.0104 72.7957C13.014 68.0436 8.4375 60.1461 8.4375 51.2091V36.1836C8.4375 32.1843 9.35212 28.3941 10.9924 24.9989M31.5799 77.2439C34.5467 77.6549 37.5612 77.5693 40.5 76.9908M59.8387 24.9111C52.7715 10.4189 33.4125 5.49139 20.0137 14.5971M62.4375 38.1243V42.0629M35.4375 23.5004C42.8963 23.5004 48.9375 29.8454 48.9375 37.6754M23.2369 31.6004C22.3803 33.5111 21.9375 35.5814 21.9375 37.6754V49.8254C21.9375 57.6554 27.9787 64.0004 35.4375 64.0004C36.0113 64.0004 36.5738 63.9644 37.125 63.8924M35.4375 38.6879V48.8129" stroke="black" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M66.4297 67.4453H64.3702C64.2295 67.4453 64.0977 67.5068 64.0098 67.6152C63.8047 67.8642 63.585 68.1045 63.3536 68.333C62.407 69.2806 61.2857 70.0357 60.0518 70.5566C58.7734 71.0966 57.3995 71.3736 56.0118 71.3711C54.6084 71.3711 53.2491 71.0957 51.9717 70.5566C50.7378 70.0357 49.6165 69.2806 48.67 68.333C47.7217 67.3886 46.9655 66.2693 46.4434 65.0371C45.9014 63.7598 45.6289 62.4033 45.6289 61C45.6289 59.5967 45.9043 58.2402 46.4434 56.9629C46.9649 55.7295 47.7149 54.6191 48.67 53.667C49.625 52.7148 50.7354 51.9648 51.9717 51.4433C53.2491 50.9043 54.6084 50.6289 56.0118 50.6289C57.4151 50.6289 58.7745 50.9014 60.0518 51.4433C61.2881 51.9648 62.3985 52.7148 63.3536 53.667C63.585 53.8984 63.8018 54.1387 64.0098 54.3847C64.0977 54.4931 64.2325 54.5547 64.3702 54.5547H66.4297C66.6143 54.5547 66.7286 54.3496 66.626 54.1943C64.3789 50.7021 60.4473 48.3906 55.9795 48.4023C48.96 48.4199 43.3321 54.1181 43.4024 61.1289C43.4727 68.0283 49.0918 73.5976 56.0118 73.5976C60.4678 73.5976 64.3819 71.289 66.626 67.8056C66.7256 67.6504 66.6143 67.4453 66.4297 67.4453ZM69.0342 60.8154L64.877 57.5342C64.7217 57.4111 64.4961 57.5224 64.4961 57.7187V59.9453H55.2969C55.168 59.9453 55.0625 60.0508 55.0625 60.1797V61.8203C55.0625 61.9492 55.168 62.0547 55.2969 62.0547H64.4961V64.2812C64.4961 64.4775 64.7246 64.5889 64.877 64.4658L69.0342 61.1846C69.0622 61.1626 69.0849 61.1346 69.1005 61.1026C69.116 61.0707 69.1241 61.0356 69.1241 61C69.1241 60.9644 69.116 60.9293 69.1005 60.8973C69.0849 60.8653 69.0622 60.8373 69.0342 60.8154Z" fill="#6C2626"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1,24 +1,209 @@
// lib/screens/attendance_screen.dart
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class AttendanceScreen extends StatelessWidget {
const AttendanceScreen({super.key});
@override
Widget build(BuildContext context) {
return Container(
// This is where your attendance content will go
// For now, it's just a placeholder
child: const Center(
child: Text(
'Attendance Content',
style: TextStyle(
color: Colors.white,
fontSize: 24,
fontWeight: FontWeight.bold,
return Directionality(
textDirection: TextDirection.rtl,
child: Stack(
children: [
/// GREETING TEXT
Positioned(
top: 10,
left: 0,
right: 0,
child: Center(
child: Text(
"صباح الخير, محمد",
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.w600,
color: Colors.white,
shadows: [
Shadow(
color: const Color(0x42000000),
blurRadius: 6,
),
],
),
),
),
),
),
Positioned(
top: 100,
left: 0,
right: 0,
child: Center(
child: Stack(
children: [
/// BACK SHADOW LAYER
Container(
height: 420,
width: 260,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(32),
boxShadow: [
// TOP-RIGHT BLACK FADE
const BoxShadow(
color: Color(0x1F2B2B2B),
blurRadius: 5,
spreadRadius: 0,
offset: Offset(10, -10),
),
// BOTTOM-LEFT GREEN GLOW
const BoxShadow(
color: Color.fromARGB(171, 206, 206, 206),
blurRadius: 5,
spreadRadius: 2,
offset: Offset(-2, 5),
),
// LIGHT GLOBAL GLOW
BoxShadow(
color: const Color(0x5532C59A),
blurRadius: 80,
offset: const Offset(0, 10),
),
],
),
),
/// FRONT MAIN RECTANGLE
Container(
height: 420,
width: 260,
decoration: BoxDecoration(
color: const Color(0x92757575),
borderRadius: BorderRadius.circular(32),
),
),
],
),
),
),
/// ===== LOGIN BUTTON (TOP-LEFT) =====
Positioned(
top: 70,
left: 24,
child: _ShadowedCard(
child: _FingerButton(
icon: "assets/images/login.svg",
label: "تسجيل الدخول",
),
shadow: const [
// Strong BLACK shadow bottom-right
BoxShadow(
color: Color(0x99000000),
blurRadius: 10,
spreadRadius: 5,
offset: Offset(5, 5),
),
],
),
),
/// ===== LOGOUT BUTTON (BOTTOM-RIGHT) =====
Positioned(
bottom: 10,
right: 24,
child: _ShadowedCard(
child: _FingerButton(
icon: "assets/images/logout.svg",
label: "تسجيل خروج",
),
shadow: const [
// GREEN glow top-left
BoxShadow(
color: Color(0x5FEEFFFA),
blurRadius: 5,
spreadRadius: 1,
offset: Offset(-5, -5),
),
// Soft dark bottom shadow
BoxShadow(
color: Color(0x44000000),
blurRadius: 25,
offset: Offset(0, 14),
),
],
),
),
],
),
);
}
}
}
/// Wrapper that applies custom layered shadows BEHIND each card
class _ShadowedCard extends StatelessWidget {
final Widget child;
final List<BoxShadow> shadow;
const _ShadowedCard({
required this.child,
required this.shadow,
});
@override
Widget build(BuildContext context) {
return Stack(
children: [
/// BACK SHADOW LAYER
Container(
height: 160,
width: 160,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(32),
boxShadow: shadow,
),
),
/// FRONT CARD
child,
],
);
}
}
class _FingerButton extends StatelessWidget {
final String icon;
final String label;
const _FingerButton({
required this.icon,
required this.label,
});
@override
Widget build(BuildContext context) {
return Container(
height: 160,
width: 160,
decoration: BoxDecoration(
color: const Color(0xFFEAFBF3),
borderRadius: BorderRadius.circular(32),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset(icon, width: 62, height: 62),
const SizedBox(height: 10),
Text(
label,
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.w600,
color: Colors.black,
),
),
],
),
);
}
}

View File

@@ -26,11 +26,11 @@ class Floatingnavbar extends StatelessWidget {
final bottomPadding = MediaQuery.of(context).padding.bottom;
return Container(
height: 85,
height: 70,
margin: EdgeInsets.only(
bottom: 10 + bottomPadding, // Add system padding to our margin
left: 25,
right: 25,
left: 28,
right: 28,
),
decoration: BoxDecoration(
color: (const Color(0xFFE9E9E9)),
@@ -80,8 +80,8 @@ class _NavBarItemTile extends StatelessWidget {
children: [
SvgPicture.asset(
item.iconPath,
width: 37,
height: 37,
width: 30,
height: 30,
colorFilter: ColorFilter.mode(
isSelected ? const Color(0xFF177046) : Colors.black,
BlendMode.srcIn,