Commit 8ece126f authored by Sandunika Senavirathna's avatar Sandunika Senavirathna

Merge branch 'IT20639280' into 'master'

It20639280

See merge request !5
parents 338dce19 985775c7
No preview for this file type
...@@ -493,6 +493,12 @@ ...@@ -493,6 +493,12 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "2.19" "languageVersion": "2.19"
}, },
{
"name": "simple_gesture_detector",
"rootUri": "file:///Users/avishkanew/.pub-cache/hosted/pub.dev/simple_gesture_detector-0.2.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{ {
"name": "sky_engine", "name": "sky_engine",
"rootUri": "file:///Users/avishka/Desktop/FLUTTER/flutter/bin/cache/pkg/sky_engine", "rootUri": "file:///Users/avishka/Desktop/FLUTTER/flutter/bin/cache/pkg/sky_engine",
...@@ -547,6 +553,12 @@ ...@@ -547,6 +553,12 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "3.0" "languageVersion": "3.0"
}, },
{
"name": "table_calendar",
"rootUri": "file:///Users/avishkanew/.pub-cache/hosted/pub.dev/table_calendar-3.0.8",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{ {
"name": "term_glyph", "name": "term_glyph",
"rootUri": "file:///Users/avishkanew/.pub-cache/hosted/pub.dev/term_glyph-1.2.1", "rootUri": "file:///Users/avishkanew/.pub-cache/hosted/pub.dev/term_glyph-1.2.1",
...@@ -668,13 +680,13 @@ ...@@ -668,13 +680,13 @@
"languageVersion": "3.0" "languageVersion": "3.0"
}, },
{ {
"name": "jema_app", "name": "mobile_application_kids",
"rootUri": "../", "rootUri": "../",
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "3.0" "languageVersion": "3.0"
} }
], ],
"generated": "2024-03-09T19:18:50.460515Z", "generated": "2024-03-18T12:13:20.503381Z",
"generator": "pub", "generator": "pub",
"generatorVersion": "3.0.1" "generatorVersion": "3.0.1"
} }
...@@ -330,6 +330,10 @@ shared_preferences_windows ...@@ -330,6 +330,10 @@ shared_preferences_windows
2.19 2.19
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.3.2/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.3.2/
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.3.2/lib/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.3.2/lib/
simple_gesture_detector
2.12
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/simple_gesture_detector-0.2.1/
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/simple_gesture_detector-0.2.1/lib/
source_span source_span
2.14 2.14
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/source_span-1.9.1/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/source_span-1.9.1/
...@@ -362,6 +366,10 @@ synchronized ...@@ -362,6 +366,10 @@ synchronized
3.0 3.0
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/synchronized-3.1.0+1/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/synchronized-3.1.0+1/
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/synchronized-3.1.0+1/lib/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/synchronized-3.1.0+1/lib/
table_calendar
2.12
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/table_calendar-3.0.8/
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/table_calendar-3.0.8/lib/
term_glyph term_glyph
2.12 2.12
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/
...@@ -442,8 +450,8 @@ xdg_directories ...@@ -442,8 +450,8 @@ xdg_directories
3.0 3.0
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/xdg_directories-1.0.4/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/xdg_directories-1.0.4/
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/xdg_directories-1.0.4/lib/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/xdg_directories-1.0.4/lib/
jema_app mobile_application_kids
3.0 3.0
file:///Users/avishkanew/Desktop/Avishk678/monitoring-and-recommendations-for-early-childhood-development/ file:///Users/avishkanew/Documents/Jema678/monitoring-and-recommendations-for-early-childhood-development/
file:///Users/avishkanew/Desktop/Avishk678/monitoring-and-recommendations-for-early-childhood-development/lib/ file:///Users/avishkanew/Documents/Jema678/monitoring-and-recommendations-for-early-childhood-development/lib/
2 2
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore-4.13.6/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth-4.15.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core-2.24.2/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage-11.6.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"image_picker_ios","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.9+1/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_foundation-2.3.2/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.3.5/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/sqflite-2.3.2/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_ios","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_ios-6.2.4/","native_build":true,"dependencies":[]},{"name":"video_player_avfoundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/video_player_avfoundation-2.4.11/","native_build":true,"dependencies":[]}],"android":[{"name":"cloud_firestore","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore-4.13.6/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth-4.15.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core-2.24.2/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage-11.6.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.17/","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_android-0.8.9+3/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"path_provider_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_android-2.2.2/","native_build":true,"dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_android-2.2.1/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/sqflite-2.3.2/","native_build":true,"dependencies":[]},{"name":"url_launcher_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.0/","native_build":true,"dependencies":[]},{"name":"video_player_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/video_player_android-2.4.11/","native_build":true,"dependencies":[]}],"macos":[{"name":"cloud_firestore","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore-4.13.6/","native_build":true,"dependencies":["firebase_core"]},{"name":"file_selector_macos","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.3+3/","native_build":true,"dependencies":[]},{"name":"firebase_auth","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth-4.15.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core-2.24.2/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage-11.6.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"image_picker_macos","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+1/","native_build":false,"dependencies":["file_selector_macos"]},{"name":"path_provider_foundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_foundation-2.3.2/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.3.5/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/sqflite-2.3.2/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_macos","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_macos-3.1.0/","native_build":true,"dependencies":[]}],"linux":[{"name":"file_selector_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.2+1/","native_build":true,"dependencies":[]},{"name":"image_picker_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+1/","native_build":false,"dependencies":["file_selector_linux"]},{"name":"path_provider_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.3.2/","native_build":false,"dependencies":["path_provider_linux"]},{"name":"url_launcher_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_linux-3.1.1/","native_build":true,"dependencies":[]}],"windows":[{"name":"cloud_firestore","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore-4.13.6/","native_build":true,"dependencies":["firebase_core"]},{"name":"file_selector_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+1/","native_build":true,"dependencies":[]},{"name":"firebase_auth","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth-4.15.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core-2.24.2/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage-11.6.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"image_picker_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/","native_build":false,"dependencies":["file_selector_windows"]},{"name":"path_provider_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/","native_build":false,"dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","native_build":true,"dependencies":[]},{"name":"shared_preferences_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.3.2/","native_build":false,"dependencies":["path_provider_windows"]},{"name":"url_launcher_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.1/","native_build":true,"dependencies":[]}],"web":[{"name":"cloud_firestore_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore_web-3.8.10/","dependencies":["firebase_core_web"]},{"name":"firebase_auth_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth_web-5.8.12/","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core_web-2.10.0/","dependencies":[]},{"name":"firebase_storage_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage_web-3.6.17/","dependencies":["firebase_core_web"]},{"name":"image_picker_for_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_for_web-2.2.0/","dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","dependencies":[]},{"name":"shared_preferences_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_web-2.2.1/","dependencies":[]},{"name":"url_launcher_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.19/","dependencies":[]},{"name":"video_player_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/video_player_web-2.0.17/","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["cloud_firestore_web","firebase_core"]},{"name":"cloud_firestore_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_storage","dependencies":["firebase_core","firebase_storage_web"]},{"name":"firebase_storage_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"rive_common","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]},{"name":"video_player","dependencies":["video_player_android","video_player_avfoundation","video_player_web"]},{"name":"video_player_android","dependencies":[]},{"name":"video_player_avfoundation","dependencies":[]},{"name":"video_player_web","dependencies":[]}],"date_created":"2024-03-10 00:48:50.540132","version":"3.10.1"} {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore-4.13.6/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth-4.15.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core-2.24.2/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage-11.6.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"image_picker_ios","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.9+1/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_foundation-2.3.2/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.3.5/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/sqflite-2.3.2/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_ios","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_ios-6.2.4/","native_build":true,"dependencies":[]},{"name":"video_player_avfoundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/video_player_avfoundation-2.4.11/","native_build":true,"dependencies":[]}],"android":[{"name":"cloud_firestore","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore-4.13.6/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth-4.15.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core-2.24.2/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage-11.6.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.17/","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_android-0.8.9+3/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"path_provider_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_android-2.2.2/","native_build":true,"dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_android-2.2.1/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/sqflite-2.3.2/","native_build":true,"dependencies":[]},{"name":"url_launcher_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.0/","native_build":true,"dependencies":[]},{"name":"video_player_android","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/video_player_android-2.4.11/","native_build":true,"dependencies":[]}],"macos":[{"name":"cloud_firestore","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore-4.13.6/","native_build":true,"dependencies":["firebase_core"]},{"name":"file_selector_macos","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.3+3/","native_build":true,"dependencies":[]},{"name":"firebase_auth","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth-4.15.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core-2.24.2/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage-11.6.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"image_picker_macos","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+1/","native_build":false,"dependencies":["file_selector_macos"]},{"name":"path_provider_foundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_foundation-2.3.2/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.3.5/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/sqflite-2.3.2/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_macos","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_macos-3.1.0/","native_build":true,"dependencies":[]}],"linux":[{"name":"file_selector_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.2+1/","native_build":true,"dependencies":[]},{"name":"image_picker_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+1/","native_build":false,"dependencies":["file_selector_linux"]},{"name":"path_provider_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.3.2/","native_build":false,"dependencies":["path_provider_linux"]},{"name":"url_launcher_linux","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_linux-3.1.1/","native_build":true,"dependencies":[]}],"windows":[{"name":"cloud_firestore","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore-4.13.6/","native_build":true,"dependencies":["firebase_core"]},{"name":"file_selector_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+1/","native_build":true,"dependencies":[]},{"name":"firebase_auth","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth-4.15.3/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core-2.24.2/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage-11.6.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"image_picker_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/","native_build":false,"dependencies":["file_selector_windows"]},{"name":"path_provider_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/","native_build":false,"dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","native_build":true,"dependencies":[]},{"name":"shared_preferences_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.3.2/","native_build":false,"dependencies":["path_provider_windows"]},{"name":"url_launcher_windows","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.1/","native_build":true,"dependencies":[]}],"web":[{"name":"cloud_firestore_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/cloud_firestore_web-3.8.10/","dependencies":["firebase_core_web"]},{"name":"firebase_auth_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_auth_web-5.8.12/","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_core_web-2.10.0/","dependencies":[]},{"name":"firebase_storage_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/firebase_storage_web-3.6.17/","dependencies":["firebase_core_web"]},{"name":"image_picker_for_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/image_picker_for_web-2.2.0/","dependencies":[]},{"name":"rive_common","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/rive_common-0.2.7/","dependencies":[]},{"name":"shared_preferences_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/shared_preferences_web-2.2.1/","dependencies":[]},{"name":"url_launcher_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.19/","dependencies":[]},{"name":"video_player_web","path":"/Users/avishkanew/.pub-cache/hosted/pub.dev/video_player_web-2.0.17/","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["cloud_firestore_web","firebase_core"]},{"name":"cloud_firestore_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_storage","dependencies":["firebase_core","firebase_storage_web"]},{"name":"firebase_storage_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"rive_common","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]},{"name":"video_player","dependencies":["video_player_android","video_player_avfoundation","video_player_web"]},{"name":"video_player_android","dependencies":[]},{"name":"video_player_avfoundation","dependencies":[]},{"name":"video_player_web","dependencies":[]}],"date_created":"2024-03-18 17:43:20.593655","version":"3.10.1"}
\ No newline at end of file \ No newline at end of file
...@@ -98,4 +98,4 @@ class UserActivitiesScreen extends StatelessWidget { ...@@ -98,4 +98,4 @@ class UserActivitiesScreen extends StatelessWidget {
}, },
); );
} }
} }
\ No newline at end of file
...@@ -77,19 +77,19 @@ class _AttendanceState extends State<Attendance> { ...@@ -77,19 +77,19 @@ class _AttendanceState extends State<Attendance> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( // Text(
'Bright Sparkle ', // ' ',
style: TextStyle( // style: TextStyle(
color: Color(0xFF11324D), // color: Color(0xFF11324D),
fontSize: 24, // fontSize: 24,
fontFamily: 'Poppins', // fontFamily: 'Poppins',
fontWeight: FontWeight.w500, // fontWeight: FontWeight.w500,
height: 0.04, // height: 0.04,
letterSpacing: -0.96, // letterSpacing: -0.96,
), // ),
), // ),
Padding( Padding(
padding: const EdgeInsets.fromLTRB(5, 40, 5, 5), padding: const EdgeInsets.fromLTRB(5, 20, 5, 5),
child: Container( child: Container(
width: 358, width: 358,
height: 76, height: 76,
...@@ -676,30 +676,32 @@ class _AttendanceState extends State<Attendance> { ...@@ -676,30 +676,32 @@ class _AttendanceState extends State<Attendance> {
label: 'Profile', label: 'Profile',
), ),
], ],
selectedItemColor: Colors.blue, selectedItemColor: Color.fromARGB(255, 103, 103, 103),
onTap: (index) async { onTap: (index) {
final prefs = await SharedPreferences.getInstance();
String rool = prefs.get('rool').toString();
// Handle bottom navigation item tap // Handle bottom navigation item tap
switch (index) {
if (index == 0) { case 0:
Navigator.push( // Navigate to Home
context, Navigator.push(
MaterialPageRoute(builder: (context) => TeacherHomePage()), context,
); MaterialPageRoute(builder: (context) => TeacherHomePage()),
} );
if (index == 1) { break;
Navigator.push( case 1:
context, // Navigate to Chat
MaterialPageRoute(builder: (context) => ChatScreen()), Navigator.push(
); context,
} MaterialPageRoute(builder: (context) => ChatScreen()),
if (index == 2) { );
Navigator.push( break;
context, case 2:
MaterialPageRoute( // Navigate to Profile
builder: (context) => TeacherProfilePage(uid: user?.uid)), Navigator.push(
); context,
MaterialPageRoute(
builder: (context) => TeacherProfilePage(uid: user?.uid)),
);
break;
} }
}, },
), ),
......
...@@ -5,6 +5,8 @@ import 'package:image_picker/image_picker.dart'; ...@@ -5,6 +5,8 @@ import 'package:image_picker/image_picker.dart';
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_storage/firebase_storage.dart'; import 'package:firebase_storage/firebase_storage.dart';
import 'package:mobile_application_kids/TeacherProfile.dart';
import 'package:mobile_application_kids/teacherhome.dart';
class ChatScreen extends StatefulWidget { class ChatScreen extends StatefulWidget {
@override @override
...@@ -93,7 +95,23 @@ class _ChatScreenState extends State<ChatScreen> { ...@@ -93,7 +95,23 @@ class _ChatScreenState extends State<ChatScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Chat '), title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text('Chat',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
), ),
body: Column( body: Column(
children: <Widget>[ children: <Widget>[
...@@ -170,6 +188,7 @@ class _ChatScreenState extends State<ChatScreen> { ...@@ -170,6 +188,7 @@ class _ChatScreenState extends State<ChatScreen> {
), ),
], ],
), ),
); );
} }
...@@ -214,7 +233,9 @@ class MessageBubble extends StatelessWidget { ...@@ -214,7 +233,9 @@ class MessageBubble extends StatelessWidget {
alignment: isCurrentUser ? Alignment.centerRight : Alignment.centerLeft, alignment: isCurrentUser ? Alignment.centerRight : Alignment.centerLeft,
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: isCurrentUser ? Colors.blue : Colors.green, color: isCurrentUser
? Color.fromARGB(36, 85, 193, 255)
: const Color.fromARGB(255, 240, 240, 240),
borderRadius: BorderRadius.circular(12.0), borderRadius: BorderRadius.circular(12.0),
), ),
padding: EdgeInsets.all(12.0), padding: EdgeInsets.all(12.0),
...@@ -228,12 +249,18 @@ class MessageBubble extends StatelessWidget { ...@@ -228,12 +249,18 @@ class MessageBubble extends StatelessWidget {
imageUrl!, imageUrl!,
width: 200, width: 200,
), ),
if (message.isNotEmpty) Text(message), if (message.isNotEmpty)
Text(
message,
style: TextStyle(
fontSize: 18,
),
),
Text( Text(
userName, userName,
style: TextStyle( style: TextStyle(
color: Color.fromARGB(255, 248, 4, 4), color: Color.fromARGB(255, 29, 51, 243),
fontSize: 8, fontSize: 12,
), ),
) )
], ],
......
...@@ -58,18 +58,19 @@ class CheckKidsPage extends StatelessWidget { ...@@ -58,18 +58,19 @@ class CheckKidsPage extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( // Text(
'Bright Sparkle ', // 'Bright Sparkle ',
style: TextStyle(
color: Color(0xFF11324D), // style: TextStyle(
fontSize: 24, // color: Color(0xFF11324D),
fontFamily: 'Poppins', // fontSize: 24,
fontWeight: FontWeight.w500, // fontFamily: 'Poppins',
height: 0.04, // fontWeight: FontWeight.w500,
letterSpacing: -0.96, // height: 0.04,
), // letterSpacing: -0.96,
), // ),
SizedBox(height: 30), // ),
SizedBox(height: 20), // space between titles at the top of the page
Text( Text(
'Select Kids ', 'Select Kids ',
style: TextStyle( style: TextStyle(
...@@ -86,7 +87,7 @@ class CheckKidsPage extends StatelessWidget { ...@@ -86,7 +87,7 @@ class CheckKidsPage extends StatelessWidget {
stream: _usersStream, stream: _usersStream,
builder: (context, snapshot) { builder: (context, snapshot) {
print("--------------------------------------"); print("--------------------------------------");
print(snapshot.data!.docs.length); // print(snapshot.data!.docs.length);
if (snapshot.connectionState == ConnectionState.waiting) { if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator(); return CircularProgressIndicator();
} }
...@@ -234,10 +235,12 @@ class CheckKidsPage extends StatelessWidget { ...@@ -234,10 +235,12 @@ class CheckKidsPage extends StatelessWidget {
label: 'Profile', label: 'Profile',
), ),
], ],
selectedItemColor: Colors.blue, selectedItemColor: Color.fromARGB(255, 103, 103, 103),
onTap: (index) { onTap: (index) {
// Handle bottom navigation item tap
switch (index) { switch (index) {
case 0: case 0:
// Navigate to Home
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => TeacherHomePage()), MaterialPageRoute(builder: (context) => TeacherHomePage()),
...@@ -255,9 +258,7 @@ class CheckKidsPage extends StatelessWidget { ...@@ -255,9 +258,7 @@ class CheckKidsPage extends StatelessWidget {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => TeacherProfilePage( builder: (context) => TeacherProfilePage(uid: user?.uid)),
uid: user?.uid,
)),
); );
break; break;
} }
......
...@@ -5,8 +5,11 @@ import 'package:firebase_auth/firebase_auth.dart'; ...@@ -5,8 +5,11 @@ import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'package:mobile_application_kids/Attendance.dart'; import 'package:mobile_application_kids/Attendance.dart';
import 'package:mobile_application_kids/ChatScreen.dart';
import 'package:mobile_application_kids/ChildrenVideo.dart'; import 'package:mobile_application_kids/ChildrenVideo.dart';
import 'package:mobile_application_kids/ReportKids.dart'; import 'package:mobile_application_kids/ReportKids.dart';
import 'package:mobile_application_kids/TeacherProfile.dart';
import 'package:mobile_application_kids/teacherhome.dart';
import 'CheckKids.dart'; import 'CheckKids.dart';
import 'ChildrenActiPhone.dart'; import 'ChildrenActiPhone.dart';
import 'ChildrenHomePage.dart'; import 'ChildrenHomePage.dart';
...@@ -116,9 +119,9 @@ class ChildrenActivity extends StatelessWidget { ...@@ -116,9 +119,9 @@ class ChildrenActivity extends StatelessWidget {
decoration: BoxDecoration( decoration: BoxDecoration(
image: DecorationImage( image: DecorationImage(
image: AssetImage( image: AssetImage(
'lib/assets/ac1.png'), // Replace 'path/to/your/image.jpg' with your image path 'lib/assets/ac1.png'),
fit: BoxFit fit: BoxFit
.cover, // Adjust this according to your needs .cover,
)), )),
), ),
), ),
...@@ -136,9 +139,9 @@ class ChildrenActivity extends StatelessWidget { ...@@ -136,9 +139,9 @@ class ChildrenActivity extends StatelessWidget {
decoration: BoxDecoration( decoration: BoxDecoration(
image: DecorationImage( image: DecorationImage(
image: AssetImage( image: AssetImage(
'lib/assets/ac2.png'), // Replace 'path/to/your/image.jpg' with your image path 'lib/assets/ac2.png'),
fit: BoxFit fit: BoxFit
.cover, // Adjust this according to your needs .cover,
)), )),
), ),
), ),
...@@ -158,9 +161,9 @@ class ChildrenActivity extends StatelessWidget { ...@@ -158,9 +161,9 @@ class ChildrenActivity extends StatelessWidget {
decoration: BoxDecoration( decoration: BoxDecoration(
image: DecorationImage( image: DecorationImage(
image: AssetImage( image: AssetImage(
'lib/assets/ac3.png'), // Replace 'path/to/your/image.jpg' with your image path 'lib/assets/ac7.png'),
fit: BoxFit fit: BoxFit
.cover, // Adjust this according to your needs .cover,
)), )),
), ),
), ),
...@@ -180,9 +183,9 @@ class ChildrenActivity extends StatelessWidget { ...@@ -180,9 +183,9 @@ class ChildrenActivity extends StatelessWidget {
decoration: BoxDecoration( decoration: BoxDecoration(
image: DecorationImage( image: DecorationImage(
image: AssetImage( image: AssetImage(
'lib/assets/ac4.png'), // Replace 'path/to/your/image.jpg' with your image path 'lib/assets/ac4.png'),
fit: BoxFit fit: BoxFit
.cover, // Adjust this according to your needs .cover,
)), )),
), ),
), ),
...@@ -202,9 +205,9 @@ class ChildrenActivity extends StatelessWidget { ...@@ -202,9 +205,9 @@ class ChildrenActivity extends StatelessWidget {
decoration: BoxDecoration( decoration: BoxDecoration(
image: DecorationImage( image: DecorationImage(
image: AssetImage( image: AssetImage(
'lib/assets/ac5.png'), // Replace 'path/to/your/image.jpg' with your image path 'lib/assets/ac6.png'),
fit: BoxFit fit: BoxFit
.cover, // Adjust this according to your needs .cover,
)), )),
), ),
), ),
...@@ -214,6 +217,50 @@ class ChildrenActivity extends StatelessWidget { ...@@ -214,6 +217,50 @@ class ChildrenActivity extends StatelessWidget {
), ),
), ),
), ),
bottomNavigationBar: BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.chat),
label: 'Chat',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
selectedItemColor: Color.fromARGB(255, 103, 103, 103),
onTap: (index) {
// Handle bottom navigation item tap
switch (index) {
case 0:
// Navigate to Home
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TeacherHomePage()),
);
break;
case 1:
// Navigate to Chat
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatScreen()),
);
break;
case 2:
// Navigate to Profile
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeacherProfilePage(uid: user?.uid)),
);
break;
}
},
),
); );
} }
......
...@@ -3,9 +3,12 @@ import 'dart:async'; ...@@ -3,9 +3,12 @@ import 'dart:async';
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mobile_application_kids/ChatScreen.dart';
import 'package:mobile_application_kids/TeacherProfile.dart';
import 'package:mobile_application_kids/teacherchat.dart'; import 'package:mobile_application_kids/teacherchat.dart';
import 'package:mobile_application_kids/classroomview.dart'; import 'package:mobile_application_kids/classroomview.dart';
import 'package:mobile_application_kids/addclassroom.dart'; import 'package:mobile_application_kids/addclassroom.dart';
import 'package:mobile_application_kids/teacherhome.dart';
import 'childrenProfile.dart'; import 'childrenProfile.dart';
...@@ -86,7 +89,7 @@ class ChildrenHomePage extends StatelessWidget { ...@@ -86,7 +89,7 @@ class ChildrenHomePage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'Bright Sparkle ', '$classroom',
style: TextStyle( style: TextStyle(
color: Color(0xFF11324D), color: Color(0xFF11324D),
fontSize: 24, fontSize: 24,
...@@ -138,7 +141,7 @@ class ChildrenHomePage extends StatelessWidget { ...@@ -138,7 +141,7 @@ class ChildrenHomePage extends StatelessWidget {
stream: _usersStream, stream: _usersStream,
builder: (context, snapshot) { builder: (context, snapshot) {
print("--------------------------------------"); print("--------------------------------------");
print(snapshot.data!.docs.length); // print(snapshot.data!.docs.length);
if (snapshot.connectionState == ConnectionState.waiting) { if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator(); return CircularProgressIndicator();
} }
...@@ -185,35 +188,32 @@ class ChildrenHomePage extends StatelessWidget { ...@@ -185,35 +188,32 @@ class ChildrenHomePage extends StatelessWidget {
], ],
), ),
trailing: Container( trailing: Container(
height: 35.0, height: 40.0,
width: 80.0, width: 100.0,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color.fromARGB(203, 164, 88, 177), color: Colors.blueAccent,
borderRadius: BorderRadius.circular(4.0), borderRadius: BorderRadius.circular(8.0),
), ),
child: TextButton( child: TextButton(
onPressed: () { onPressed: () {
print(document); print(document);
// Handle view class button press // Handle view class button press
Navigator.of(context).push( Navigator.push(
MaterialPageRoute( context,
builder: (_) => MaterialPageRoute(
ChildrenProfilePage(document), builder: (context) =>
ChildrenProfilePage(document, "C"),
),
);
},
child: Text(
'View',
style: poppinsTextStyle.copyWith(
color: Colors.white,
), ),
);
},
child: Text(
'View',
style: TextStyle(
color: Colors.white,
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
height: 1,
), ),
), ),
), ),
),
); );
; ;
}, },
...@@ -224,6 +224,50 @@ class ChildrenHomePage extends StatelessWidget { ...@@ -224,6 +224,50 @@ class ChildrenHomePage extends StatelessWidget {
], ],
), ),
), ),
bottomNavigationBar: BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.chat),
label: 'Chat',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
selectedItemColor: Color.fromARGB(255, 103, 103, 103),
onTap: (index) {
// Handle bottom navigation item tap
switch (index) {
case 0:
// Navigate to Home
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TeacherHomePage()),
);
break;
case 1:
// Navigate to Chat
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatScreen()),
);
break;
case 2:
// Navigate to Profile
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeacherProfilePage(uid: user?.uid)),
);
break;
}
},
),
), ),
); );
} }
......
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:mobile_application_kids/progressReport.dart';
import 'package:mobile_application_kids/teacherchat.dart';
import 'package:mobile_application_kids/classroomview.dart';
import 'package:mobile_application_kids/addclassroom.dart';
import 'package:mobile_application_kids/teacherhome.dart';
import 'package:url_launcher/url_launcher.dart';
import 'ActivitiesView.dart';
import 'ChatScreen.dart';
import 'TeacherProfile.dart';
import 'kidsReportView.dart';
class pChildrenProfilePage extends StatelessWidget {
late User? user;
late final Stream<QuerySnapshot> _usersStream, _usersStream2;
int _age = 10;
String role = '';
late final userDetails;
pChildrenProfilePage(document, role) {
print(role);
this.role = role;
this.userDetails = document;
user = FirebaseAuth.instance.currentUser;
initializeStreams();
calculateAge(userDetails['Birthday']);
}
void initializeStreams() {
_usersStream = FirebaseFirestore.instance
.collection('classroom')
.where('userId', isEqualTo: user?.uid)
.snapshots();
_usersStream2 = FirebaseFirestore.instance
.collection('students')
.where('user', isEqualTo: user?.uid)
.snapshots();
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
// Disable the back button press
return false;
},
child: Scaffold(
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
Navigator.of(context).pop();
},
),
actions: [
Text(
'Children ',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
)
],
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
userDetails['className'],
// 'Bright Sparkle ',
style: TextStyle(
color: Color(0xFF11324D),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
height: 0.04,
letterSpacing: -0.96,
),
),
Padding(
padding: const EdgeInsets.fromLTRB(5, 40, 5, 5),
child: Container(
width: 358,
height: 255,
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(13.64),
),
shadows: [
BoxShadow(
color: Color(0x0C000000),
blurRadius: 181.84,
offset: Offset(0, 4.55),
spreadRadius: 0,
)
],
),
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding:
const EdgeInsets.fromLTRB(0, 10, 0, 0),
child: Container(
width: 84,
height: 84,
decoration: ShapeDecoration(
image: DecorationImage(
image: AssetImage(
"lib/assets/Ellipse 8.png"),
fit: BoxFit.fill,
),
shape: OvalBorder(),
),
),
),
const SizedBox(height: 11),
Container(
width: double.infinity,
height: 20,
padding: const EdgeInsets.only(
left: 45, right: 43),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
Container(
width: 124,
height: double.infinity,
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
userDetails['Firstname'],
style: TextStyle(
color: Color(0xFF11324D),
fontSize: 20,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
height: 0.06,
letterSpacing: -0.80,
),
),
const SizedBox(width: 3),
Container(
width: 7,
height: 7,
decoration: ShapeDecoration(
color: Color(0xFF00E332),
shape: OvalBorder(),
),
),
],
),
),
],
),
),
const SizedBox(height: 11),
Text(
userDetails['role'],
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
height: 0.07,
),
),
const SizedBox(height: 11),
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
width: double.infinity,
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text.rich(
TextSpan(
children: [
TextSpan(
text: 'Age',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
),
),
TextSpan(
text: ' : ',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
),
),
TextSpan(
text: _age.toString(),
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
),
),
],
),
),
const SizedBox(width: 17),
Text.rich(
TextSpan(
children: [
TextSpan(
text: 'Birthday',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
),
),
TextSpan(
text: ' : ',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
),
),
TextSpan(
text: userDetails['Birthday'],
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
),
),
],
),
),
const SizedBox(width: 17),
Text.rich(
TextSpan(
children: [
TextSpan(
text: 'Sex',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
),
),
TextSpan(
text: ' : ',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
),
),
TextSpan(
text: userDetails['Sex'],
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
),
),
],
),
),
],
),
),
),
Padding(
padding: const EdgeInsets.fromLTRB(
50, 20, 40, 0),
child: Container(
width: 302,
height: 37,
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Container(
padding: const EdgeInsets.only(
top: 12,
left: 10,
bottom: 11.63,
),
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(6)),
shadows: [
BoxShadow(
color: Color(0x3F000000),
blurRadius: 4,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
),
child: Center(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
ChatScreen()),
);
},
child: Container(
height: double.infinity,
child: Row(
mainAxisSize:
MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment
.start,
crossAxisAlignment:
CrossAxisAlignment
.center,
children: [
Icon(
Icons.chat,
color:
Colors.black26,
),
Text(
'Chat',
style: TextStyle(
color:
Colors.black,
fontSize: 12,
fontFamily:
'Poppins',
fontWeight:
FontWeight
.w400,
height: 0.08,
),
),
const SizedBox(
width: 10),
],
),
),
),
],
),
),
),
const SizedBox(width: 16),
Container(
padding: const EdgeInsets.only(
top: 12,
left: 10,
bottom: 11.63,
),
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(6)),
shadows: [
BoxShadow(
color: Color(0x3F000000),
blurRadius: 4,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
GestureDetector(
onTap: () {
_getPhoneNumber(user?.uid);
},
child: Container(
height: double.infinity,
child: Row(
mainAxisSize:
MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment
.start,
crossAxisAlignment:
CrossAxisAlignment
.center,
children: [
Icon(
Icons.call,
color: Colors.black26,
),
Text(
'Call',
style: TextStyle(
color: Colors.black,
fontSize: 12,
fontFamily:
'Poppins',
fontWeight:
FontWeight.w400,
height: 0.08,
),
),
const SizedBox(
width: 10),
],
),
),
),
],
),
),
const SizedBox(width: 16),
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
UserActivitiesScreen(
userId: user!.uid)),
);
},
child: Container(
padding: const EdgeInsets.only(
top: 11,
bottom: 12,
),
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(
6)),
shadows: [
BoxShadow(
color: Color(0x3F000000),
blurRadius: 4,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
Container(
height: double.infinity,
child: Row(
mainAxisSize:
MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment
.center,
crossAxisAlignment:
CrossAxisAlignment
.center,
children: [
Icon(
Icons.book,
color: Colors.black26,
),
Text(
'Activites',
style: TextStyle(
color: Colors.black,
fontSize: 12,
fontFamily:
'Poppins',
fontWeight:
FontWeight.w400,
),
),
const SizedBox(
width: 10),
],
),
),
],
),
),
),
],
),
),
)
],
),
),
],
),
))),
Padding(
padding: const EdgeInsets.fromLTRB(8, 30, 0, 0),
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
role == "P"
? Container(
width: 359,
height: 178,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 359,
height: 128,
clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration(
image: DecorationImage(
image:
AssetImage("lib/assets/banner.png"),
fit: BoxFit.cover,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
shadows: [
BoxShadow(
color: Color(0x19000000),
blurRadius: 20,
offset: Offset(0, 2),
spreadRadius: 0,
)
],
),
),
const SizedBox(height: 8),
Container(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Container(
padding: const EdgeInsets.symmetric(
horizontal: 40, vertical: 18), //play game button
decoration: ShapeDecoration(
color: Color(0xFF48B62C),
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(4)),
shadows: [
BoxShadow(
color: Color(0x3F000000),
blurRadius: 4,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
Text(
'Play Here ',
style: TextStyle(
color: Colors.white,
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
height: 0.06,
),
),
],
),
),
],
),
),
],
),
)
: Container(),
SizedBox(
height: 10,
),
Text(
'Report',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
height: 0.06,
),
),
const SizedBox(height: 20),
Padding(
padding: EdgeInsets.only(
left: MediaQuery.of(context).size.width * 0.04),
child: SingleChildScrollView(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
ReportKidsViewPage(
sid: userDetails.id)),
);
},
child: Container(
width:
MediaQuery.of(context).size.width * 0.4,
height: 135,
child: Stack(
children: [
Positioned(
left: 0,
top: 0,
child: Container(
width:
MediaQuery.of(context).size.width,
height: 135,
decoration: ShapeDecoration(
color: Color(0xFFF1EFFF),
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(8.44),
),
),
),
),
Positioned(
left: 16,
top: 17,
child: Container(
width: 119.18,
height: 100.88,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Padding(
padding:
const EdgeInsets.fromLTRB(0, 0, 0, 5),
child: Container(
width: 16.88,
height: 16.88,
clipBehavior: Clip.antiAlias,
decoration: BoxDecoration(),
child: Stack(children: [
Icon(
Icons.person_3,
color: Colors.black26,
),
]),
),
),
const SizedBox(height: 0),
SizedBox(
width: 119.18,
child: Text.rich(
TextSpan(
children: [
TextSpan(
text: 'Monthly \npsycholo. report \n ',
style: TextStyle(
color:
Color(0xFF403572),
fontSize: 14,
fontFamily: 'poppins',
fontWeight:
FontWeight.w500,
// letterSpacing: 0.08,
height: 0.9,
),
),
],
),
),
),
const SizedBox(height: 1),
SizedBox(
width: 119.18,
child: Opacity(
opacity: 0.70,
child: Text(
'Some short description of this type of report.',
style: TextStyle(
color: Color(0xFF8DAEAE),
fontSize: 9.55,
fontFamily: 'poppins',
fontWeight:
FontWeight.w400,
height: 0,
),
),
),
),
],
),
),
),
],
),
),
),
SizedBox(
width: 10,
),
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
progressReport()));
},
child: Container(
width: 150,
height: 135,
child: Stack(
children: [
Positioned(
left: 0,
top: 0,
child: Container(
width: 170,
height: 135,
decoration: ShapeDecoration(
color: Color(0xFFC4F3F3),
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(8.44),
),
),
),
),
Positioned(
left: 16,
top: 17,
child: Container(
width: 119.18,
height: 100.88,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Padding(
padding:
const EdgeInsets.fromLTRB(0, 0, 0, 5),
child: Container(
width: 16.88,
height: 16.88,
clipBehavior: Clip.antiAlias,
decoration: BoxDecoration(),
child: Stack(children: [
Icon(
Icons.calendar_month,
color: Colors.black26,
),
]),
),
),
const SizedBox(height: 1),
SizedBox(
width: 119.18,
child: Text.rich(
TextSpan(
children: [
TextSpan(
text: 'Monthly prediction report \n',
style: TextStyle(
color:
Color(0xFF479696),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight:
FontWeight.w500,
height: 0.9,
),
),
],
),
),
),
const SizedBox(height: 1),
SizedBox(
width: 119.18,
child: Opacity(
opacity: 0.70,
child: Text(
'Some short description of this type of report.',
style: TextStyle(
color: Color(0xFF8DAEAE),
fontSize: 9.55,
fontFamily: 'poppins',
fontWeight:
FontWeight.w400,
height: 0,
),
),
),
),
],
),
),
),
],
),
),
),
],
),
),
),
],
),
),
)
],
),
),
bottomNavigationBar: BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.chat),
label: 'Chat',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
selectedItemColor: Colors.blue,
onTap: (index) {
// Handle bottom navigation item tap
if (index == 0) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TeacherHomePage()),
);
}
if (index == 1) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatScreen()),
);
}
if (index == 2) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeacherProfilePage(uid: user?.uid)),
);
}
},
),
),
);
}
_launchPhone(url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
Future<String?> _getPhoneNumber(userUID) async {
try {
var snapshot = await FirebaseFirestore.instance
.collection('students')
.where('user', isEqualTo: userUID)
.get();
if (snapshot.docs.isNotEmpty) {
// Assuming 'phone' is the field containing the phone number
String mobile = snapshot.docs.first['Parentphone'];
final url = 'tel:$mobile';
_launchPhone(url);
} else {
return null; // Document not found
}
} catch (e) {
print("Error getting phone number: $e");
return null;
}
}
void calculateAge(birthday) {
String birthdayText = birthday.trim();
if (birthdayText.isNotEmpty) {
try {
DateTime birthday = DateTime.parse(birthdayText);
DateTime now = DateTime.now();
Duration difference = now.difference(birthday);
_age = (difference.inDays / 365).floor();
} catch (e) {
print('Invalid date format: $e');
// Handle invalid date format
}
} else {
// Handle empty input
}
}
}
...@@ -26,7 +26,7 @@ class _ParentLoginPage extends State<ParentLoginPage> { ...@@ -26,7 +26,7 @@ class _ParentLoginPage extends State<ParentLoginPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
backgroundColor: Colors.transparent, backgroundColor: Colors.white,
elevation: 0, elevation: 0,
leading: IconButton( leading: IconButton(
icon: const Icon( icon: const Icon(
...@@ -135,15 +135,16 @@ class _ParentLoginPage extends State<ParentLoginPage> { ...@@ -135,15 +135,16 @@ class _ParentLoginPage extends State<ParentLoginPage> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(8.0),
color: Colors.green, color: Colors.blueAccent,
), ),
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(12.0),
child: Text( child: Text(
'Login', 'Login',
style: TextStyle(color: Colors.black), style:
TextStyle(color: Colors.white, fontSize: 18),
), ),
), ),
), ),
......
...@@ -61,18 +61,18 @@ class ReportKidsPage extends StatelessWidget { ...@@ -61,18 +61,18 @@ class ReportKidsPage extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( // Text(
'Bright Sparkle ', // 'Bright Sparkle ',
style: TextStyle( // style: TextStyle(
color: Color(0xFF11324D), // color: Color(0xFF11324D),
fontSize: 24, // fontSize: 24,
fontFamily: 'Poppins', // fontFamily: 'Poppins',
fontWeight: FontWeight.w500, // fontWeight: FontWeight.w500,
height: 0.04, // height: 0.04,
letterSpacing: -0.96, // letterSpacing: -0.96,
), // ),
), // ),
SizedBox(height: 30), SizedBox(height: 20), // sspace here between texts
Text( Text(
'Select Kids ', 'Select Kids ',
style: TextStyle( style: TextStyle(
...@@ -89,7 +89,7 @@ class ReportKidsPage extends StatelessWidget { ...@@ -89,7 +89,7 @@ class ReportKidsPage extends StatelessWidget {
stream: _usersStream, stream: _usersStream,
builder: (context, snapshot) { builder: (context, snapshot) {
print("--------------------------------------"); print("--------------------------------------");
print(snapshot.data!.docs.length); // print(snapshot.data!.docs.length);
if (snapshot.connectionState == ConnectionState.waiting) { if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator(); return CircularProgressIndicator();
} }
...@@ -229,10 +229,12 @@ class ReportKidsPage extends StatelessWidget { ...@@ -229,10 +229,12 @@ class ReportKidsPage extends StatelessWidget {
label: 'Profile', label: 'Profile',
), ),
], ],
selectedItemColor: Colors.blue, selectedItemColor: Color.fromARGB(255, 103, 103, 103),
onTap: (index) { onTap: (index) {
// Handle bottom navigation item tap
switch (index) { switch (index) {
case 0: case 0:
// Navigate to Home
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => TeacherHomePage()), MaterialPageRoute(builder: (context) => TeacherHomePage()),
...@@ -250,9 +252,7 @@ class ReportKidsPage extends StatelessWidget { ...@@ -250,9 +252,7 @@ class ReportKidsPage extends StatelessWidget {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => TeacherProfilePage( builder: (context) => TeacherProfilePage(uid: user?.uid)),
uid: user?.uid,
)),
); );
break; break;
} }
......
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mobile_application_kids/games.dart';
import 'package:mobile_application_kids/login.dart'; import 'package:mobile_application_kids/login.dart';
import 'package:mobile_application_kids/p_or_t.dart';
import 'package:mobile_application_kids/teacherchat.dart'; import 'package:mobile_application_kids/teacherchat.dart';
import 'package:mobile_application_kids/teacherhome.dart'; import 'package:mobile_application_kids/teacherhome.dart';
import 'ChatScreen.dart'; import 'ChatScreen.dart';
class TeacherProfilePage extends StatefulWidget { class TeacherProfilePage extends StatefulWidget {
final String? uid; // Make uid nullable final String? uid;
TeacherProfilePage({required this.uid, Key? key}); TeacherProfilePage({required this.uid, Key? key});
...@@ -19,7 +19,6 @@ class TeacherProfilePage extends StatefulWidget { ...@@ -19,7 +19,6 @@ class TeacherProfilePage extends StatefulWidget {
class _TeacherProfilePageState extends State<TeacherProfilePage> { class _TeacherProfilePageState extends State<TeacherProfilePage> {
late User? user; late User? user;
late final Stream<QuerySnapshot> _usersStream;
late String fullName = ""; late String fullName = "";
late String email = ""; late String email = "";
late String state = ""; late String state = "";
...@@ -37,34 +36,24 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> { ...@@ -37,34 +36,24 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> {
void initState() { void initState() {
super.initState(); super.initState();
user = FirebaseAuth.instance.currentUser; user = FirebaseAuth.instance.currentUser;
initializeStreams();
getUserData(); getUserData();
} }
void initializeStreams() { Future<void> getUserData() async {
print("Document does not exist " + uid);
FirebaseFirestore.instance FirebaseFirestore.instance
.collection('users') .collection('users')
.doc( .doc(user?.uid)
uid) // Assuming you want to get a specific document based on the user's UID
.get() .get()
.then((DocumentSnapshot documentSnapshot) { .then((DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists) { if (documentSnapshot.exists) {
// Access the data of the document
targetDoc = documentSnapshot.data() as Map<String, dynamic>? ?? {}; targetDoc = documentSnapshot.data() as Map<String, dynamic>? ?? {};
print("doc" + targetDoc.toString());
// Check if the document ID matches a specific value
setState(() { setState(() {
// Process the document data
fullName = targetDoc['fullName']; fullName = targetDoc['fullName'];
email = targetDoc['email']; email = targetDoc['email'];
state = targetDoc['state']; state = targetDoc['state'];
capacity = targetDoc['enrolmentCapacity']; capacity = targetDoc['enrolmentCapacity'];
school = targetDoc['school']; school = targetDoc['school'];
}); });
print(
"Full Name: $fullName, Email: $email, State: $state, Capacity: $capacity, School: $school");
} else { } else {
print("Document does not exist"); print("Document does not exist");
} }
...@@ -77,7 +66,6 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> { ...@@ -77,7 +66,6 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return WillPopScope( return WillPopScope(
onWillPop: () async { onWillPop: () async {
// Disable the back button press
return false; return false;
}, },
child: Scaffold( child: Scaffold(
...@@ -89,396 +77,82 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> { ...@@ -89,396 +77,82 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> {
}, },
), ),
actions: [ actions: [
Text( Padding(
'Profile ', padding: const EdgeInsets.only(right: 16.0),
style: TextStyle( child: Text(
color: Color(0xFF554994), 'Teacher Profile',
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
)
],
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Bright Sparkle ',
style: TextStyle( style: TextStyle(
color: Color(0xFF11324D), color: Color(0xFF554994),
fontSize: 24, fontSize: 24,
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontWeight: FontWeight.w500, fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
), ),
), ),
Padding( )
padding: const EdgeInsets.fromLTRB(8, 30, 0, 0), ],
child: SingleChildScrollView( ),
child: Column( body: Center(
children: [ child: Padding(
Container( padding: const EdgeInsets.all(30.0),
width: 363, child: Column(
height: 77, crossAxisAlignment: CrossAxisAlignment.start,
padding: const EdgeInsets.symmetric(horizontal: 2), children: [
child: Row( Center(
mainAxisSize: MainAxisSize.min, child: Image.asset(
mainAxisAlignment: MainAxisAlignment.start, "lib/assets/teacherprof.png",
crossAxisAlignment: CrossAxisAlignment.center, fit: BoxFit.fitHeight,
children: [ height: 300,
Container( ),
width: 77, ),
height: 77, SizedBox(height: 30),
decoration: ShapeDecoration( Text(
image: DecorationImage( 'Name: $fullName',
image: AssetImage("lib/assets/Ellipse 8.png"), style: TextStyle(fontSize: 18, fontWeight: FontWeight.w400),
fit: BoxFit.cover, ),
), SizedBox(height: 10),
shape: OvalBorder(), Text(
shadows: [ 'Email: $email',
BoxShadow( style: TextStyle(fontSize: 18, fontWeight: FontWeight.w400),
color: Color(0x3F000000), ),
blurRadius: 12.32, SizedBox(height: 10),
offset: Offset(0, 3.08), Text(
spreadRadius: 0, 'Address: $state',
) style: TextStyle(fontSize: 18, fontWeight: FontWeight.w400),
], ),
), SizedBox(height: 10),
), Text(
const SizedBox(width: 120), 'Capacity: $capacity',
SizedBox( style: TextStyle(fontSize: 18, fontWeight: FontWeight.w400),
width: 148, ),
child: Text( SizedBox(height: 10),
'Bright Spark', Text(
style: TextStyle( 'School: $school',
color: Color(0xFF473D7F), style: TextStyle(fontSize: 18, fontWeight: FontWeight.w400),
fontSize: 23, ),
fontFamily: 'Poppins', SizedBox(height: 20),
fontWeight: FontWeight.w600, Center(
height: 0, child: ElevatedButton(
), onPressed: _signOut,
), style: ElevatedButton.styleFrom(
), primary: Colors.blueAccent,
], shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
), ),
), ),
SizedBox( child: Padding(
height: 40, padding: const EdgeInsets.all(10.0),
), child: Text(
Align( 'Sign Out',
alignment: Alignment.centerLeft, style: TextStyle(color: const Color.fromARGB(255, 255, 255, 255)),
child: Container(
width: 139,
height: 42,
child: Stack(
children: [
Positioned(
left: 0,
top: 0,
child: Text(
'Full Name',
style: TextStyle(
color: Color(0xFF797C7B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.07,
),
),
),
Positioned(
left: 4,
top: 24,
child: Text(
fullName,
style: TextStyle(
color: Color(0xFF000D07),
fontSize: 18,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.06,
),
),
),
],
),
), ),
), ),
SizedBox(height: 10), ),
Align( ),
alignment: Alignment.centerLeft, ],
child: Container( ),
width: 265,
height: 42,
child: Stack(
children: [
Positioned(
left: 0,
top: 0,
child: Text(
'Email Address',
style: TextStyle(
color: Color(0xFF797C7B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.07,
),
),
),
Positioned(
left: 4,
top: 24,
child: Text(
email,
style: TextStyle(
color: Color(0xFF000D07),
fontSize: 18,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.06,
),
),
),
],
),
)),
SizedBox(height: 10),
Align(
alignment: Alignment.centerLeft,
child: Container(
width: 291,
height: 42,
child: Stack(
children: [
Positioned(
left: 0,
top: 0,
child: Text(
'Address',
style: TextStyle(
color: Color(0xFF797C7B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.07,
),
),
),
Positioned(
left: 4,
top: 24,
child: Text(
state,
style: TextStyle(
color: Color(0xFF000D07),
fontSize: 18,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.06,
),
),
),
],
),
)),
SizedBox(height: 10),
Align(
alignment: Alignment.centerLeft,
child: Container(
width: 291,
height: 42,
child: Stack(
children: [
Positioned(
left: 0,
top: 0,
child: Text(
'Capacity',
style: TextStyle(
color: Color(0xFF797C7B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.07,
),
),
),
Positioned(
left: 4,
top: 24,
child: Text(
capacity,
style: TextStyle(
color: Color(0xFF000D07),
fontSize: 18,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.06,
),
),
),
],
),
)),
SizedBox(height: 10),
Align(
alignment: Alignment.centerLeft,
child: Container(
width: 291,
height: 42,
child: Stack(
children: [
Positioned(
left: 0,
top: 0,
child: Text(
'School',
style: TextStyle(
color: Color(0xFF797C7B),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.07,
),
),
),
Positioned(
left: 4,
top: 24,
child: Text(
school,
style: TextStyle(
color: Color(0xFF000D07),
fontSize: 18,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0.06,
),
),
),
],
),
)),
SizedBox(
height: 20,
),
Align(
alignment: Alignment.centerLeft,
child: Container(
width: 80,
height: 24,
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.help,
color: const Color.fromARGB(255, 185, 184, 179),
size: 30.0,
),
const SizedBox(width: 10),
Text(
'Help',
style: TextStyle(
color: Colors.black,
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0,
),
),
],
),
)),
SizedBox(
height: 20,
),
Align(
alignment: Alignment.centerLeft,
child: GestureDetector(
onTap: () => {},
child: Container(
width: 92,
height: 24,
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.info,
color:
const Color.fromARGB(255, 166, 165, 160),
size: 30.0,
),
const SizedBox(width: 10),
Text(
'About',
style: TextStyle(
color: Colors.black,
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0,
),
),
],
),
),
)),
SizedBox(
height: 20,
),
Align(
alignment: Alignment.centerLeft,
child: GestureDetector(
onTap: () {
_signOut(context);
},
child: Container(
width: 110,
height: 24,
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.home,
color:
const Color.fromARGB(255, 212, 212, 207),
size: 30.0,
),
const SizedBox(width: 10),
Text(
'Sign Out',
style: TextStyle(
color: Colors.black,
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
height: 0,
),
),
],
),
),
)),
],
)),
)
],
), ),
), ),
bottomNavigationBar: BottomNavigationBar( bottomNavigationBar: BottomNavigationBar(
items: const [ items: const [
BottomNavigationBarItem( BottomNavigationBarItem(
icon: Icon(Icons.home), icon: Icon(Icons.home),
...@@ -488,54 +162,31 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> { ...@@ -488,54 +162,31 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> {
icon: Icon(Icons.chat), icon: Icon(Icons.chat),
label: 'Chat', label: 'Chat',
), ),
BottomNavigationBarItem(
icon: Icon(Icons.videogame_asset),
label: 'Games',
),
BottomNavigationBarItem( BottomNavigationBarItem(
icon: Icon(Icons.person), icon: Icon(Icons.person),
label: 'Profile', label: 'Profile',
), ),
], ],
selectedItemColor: Color(0xFF7A1FA0), selectedItemColor: Colors.blue,
unselectedItemColor: Color(0xFFA9ABAD), currentIndex: 2,
selectedLabelStyle: TextStyle(color: Color(0xFF7A1FA0)),
unselectedLabelStyle: TextStyle(color: Color.fromARGB(0, 197, 16, 16)),
currentIndex: 3,
onTap: (index) { onTap: (index) {
switch (index) { if (index == 0) {
case 0: Navigator.push(
Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => TeacherHomePage()), MaterialPageRoute(builder: (context) => TeacherHomePage()),
); );
break; } else if (index == 1) {
case 1: Navigator.push(
Navigator.push( context,
context, MaterialPageRoute(builder: (context) => ChatScreen()),
MaterialPageRoute(builder: (context) => ChatScreen()), );
); } else if (index == 2) {
break; Navigator.push(
case 2: context,
// Handle Game MaterialPageRoute(
Navigator.push( builder: (context) => TeacherProfilePage(uid: user?.uid),
context, ),
MaterialPageRoute( );
builder: (context) => GamesPage(
),
),
);
break;
case 3:
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeacherProfilePage(
uid: user?.uid,
),
),
);
break;
} }
}, },
), ),
...@@ -543,48 +194,19 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> { ...@@ -543,48 +194,19 @@ class _TeacherProfilePageState extends State<TeacherProfilePage> {
); );
} }
Future<void> _signOut(context) async { Future<void> _signOut() async {
try { try {
await _auth.signOut(); await _auth.signOut();
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) => ParentTeacherPage(
LoginPage(backgroundColor: Color.fromARGB(255, 255, 255, 255))), backgroundColor: Color.fromARGB(255, 255, 255, 255),
),
),
); );
} catch (e) { } catch (e) {
print('Error signing out: $e'); print('Error signing out: $e');
} }
} }
// Define a function to fetch user data from Firestore
Future<void> getUserData() async {
FirebaseFirestore.instance
.collection('users')
.doc(user
?.uid) // Assuming you want to get a specific document based on the user's UID
.get()
.then((DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists) {
// Access the data of the document
targetDoc = documentSnapshot.data() as Map<String, dynamic>? ?? {};
// Check if the document ID matches a specific value
setState(() {
// Process the document data
fullName = targetDoc['fullName'];
String email = targetDoc['email'];
String state = targetDoc['state'];
String capacity = targetDoc['enrolmentCapacity'];
String school = targetDoc['school'];
});
print(
"Full Name: $fullName, Email: $email, State: $state, Capacity: $capacity, School: $school");
} else {
print("Document does not exist");
}
}).catchError((error) {
print("Error getting document: $error");
});
}
} }
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mobile_application_kids/ChatScreen.dart';
import 'package:mobile_application_kids/TeacherProfile.dart';
import 'package:mobile_application_kids/teacherhome.dart';
class ActivitiesPage extends StatelessWidget { class ActivitiesPage extends StatelessWidget {
@override @override
...@@ -44,7 +47,7 @@ class ActivitiesPage extends StatelessWidget { ...@@ -44,7 +47,7 @@ class ActivitiesPage extends StatelessWidget {
children: [ children: [
Expanded( Expanded(
child: ActivityBox( child: ActivityBox(
title: 'Social Activities', title: 'Coloring Book',
icon: Icons.group, icon: Icons.group,
), ),
), ),
...@@ -62,7 +65,7 @@ class ActivitiesPage extends StatelessWidget { ...@@ -62,7 +65,7 @@ class ActivitiesPage extends StatelessWidget {
children: [ children: [
Expanded( Expanded(
child: ActivityBox( child: ActivityBox(
title: 'Kid Activity', title: 'Environment',
icon: Icons.child_care, icon: Icons.child_care,
), ),
), ),
...@@ -168,6 +171,51 @@ class CameraScreen extends StatelessWidget { ...@@ -168,6 +171,51 @@ class CameraScreen extends StatelessWidget {
body: Center( body: Center(
child: Text('Camera Screen Placeholder'), child: Text('Camera Screen Placeholder'),
), ),
bottomNavigationBar: BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.chat),
label: 'Chat',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
selectedItemColor: Color.fromARGB(255, 103, 103, 103),
onTap: (index) {
// Handle bottom navigation item tap
switch (index) {
case 0:
// Navigate to Home
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TeacherHomePage()),
);
break;
case 1:
// Navigate to Chat
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatScreen()),
);
break;
case 2:
// Navigate to Profile
var user;
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeacherProfilePage(uid: user?.uid)),
);
break;
}
},
),
); );
} }
} }
\ No newline at end of file
...@@ -68,11 +68,11 @@ class _AddClassroomPageState extends State<AddClassroomPage> { ...@@ -68,11 +68,11 @@ class _AddClassroomPageState extends State<AddClassroomPage> {
), ),
SizedBox(height: 20), SizedBox(height: 20),
Container( Container(
height: 50.0, height: 48.0,
width: 150.0, width: 200.0,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color.fromARGB(203, 164, 88, 177), color: Colors.blueAccent,
borderRadius: BorderRadius.circular(4.0), borderRadius: BorderRadius.circular(8.0),
), ),
child: TextButton( child: TextButton(
onPressed: () { onPressed: () {
......
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:table_calendar/table_calendar.dart';
class CalendarScreen extends StatefulWidget {
@override
_CalendarScreenState createState() => _CalendarScreenState();
}
class _CalendarScreenState extends State<CalendarScreen> {
late CalendarFormat _calendarFormat;
late DateTime _focusedDay;
late DateTime _selectedDay;
@override
void initState() {
super.initState();
_calendarFormat = CalendarFormat.month;
_focusedDay = DateTime.now();
_selectedDay = DateTime.now();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text('Calendar',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Text(
DateFormat.yMMMM().format(_focusedDay),
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
),
SizedBox(height: 20),
TableCalendar(
firstDay: DateTime.utc(2020),
lastDay: DateTime.utc(2030),
focusedDay: _focusedDay,
calendarFormat: _calendarFormat,
selectedDayPredicate: (day) {
return isSameDay(_selectedDay, day);
},
onDaySelected: (selectedDay, focusedDay) {
setState(() {
_selectedDay = selectedDay;
_focusedDay = focusedDay;
});
},
onPageChanged: (focusedDay) {
setState(() {
_focusedDay = focusedDay;
});
},
headerVisible: false, // This removes the button next to the month name
calendarStyle: CalendarStyle(
defaultTextStyle: TextStyle(fontSize: 16),
selectedDecoration: BoxDecoration(
color: Colors.blue,
shape: BoxShape.circle,
),
todayDecoration: BoxDecoration(
color: Colors.transparent,
shape: BoxShape.circle,
border: Border.all(color: Colors.blue, width: 2),
),
),
daysOfWeekStyle: DaysOfWeekStyle(
weekdayStyle: TextStyle(color: Colors.black87),
weekendStyle: TextStyle(color: Colors.red),
),
),
SizedBox(height: 20),
Container(
margin: EdgeInsets.symmetric(horizontal: 16),
child: Text(
'Special Notes',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
),
],
),
),
);
}
}
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:jema_app/progressReport.dart'; import 'package:mobile_application_kids/progressReport.dart';
import 'package:jema_app/teacherchat.dart'; import 'package:mobile_application_kids/teacherchat.dart';
import 'package:jema_app/classroomview.dart'; import 'package:mobile_application_kids/classroomview.dart';
import 'package:jema_app/addclassroom.dart'; import 'package:mobile_application_kids/addclassroom.dart';
import 'package:jema_app/teacherhome.dart'; import 'package:mobile_application_kids/teacherhome.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'ActivitiesView.dart'; import 'ActivitiesView.dart';
...@@ -16,9 +16,12 @@ import 'kidsReportView.dart'; ...@@ -16,9 +16,12 @@ import 'kidsReportView.dart';
class ChildrenProfilePage extends StatelessWidget { class ChildrenProfilePage extends StatelessWidget {
late User? user; late User? user;
late final Stream<QuerySnapshot> _usersStream, _usersStream2; late final Stream<QuerySnapshot> _usersStream, _usersStream2;
int _age = 0; int _age = 10;
String role = '';
late final userDetails; late final userDetails;
ChildrenProfilePage(document) { ChildrenProfilePage(document, role) {
print(role);
this.role = role;
this.userDetails = document; this.userDetails = document;
user = FirebaseAuth.instance.currentUser; user = FirebaseAuth.instance.currentUser;
initializeStreams(); initializeStreams();
...@@ -72,7 +75,8 @@ class ChildrenProfilePage extends StatelessWidget { ...@@ -72,7 +75,8 @@ class ChildrenProfilePage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'Bright Sparkle ', userDetails['className'],
// 'Bright Sparkle ',
style: TextStyle( style: TextStyle(
color: Color(0xFF11324D), color: Color(0xFF11324D),
fontSize: 24, fontSize: 24,
...@@ -558,75 +562,82 @@ class ChildrenProfilePage extends StatelessWidget { ...@@ -558,75 +562,82 @@ class ChildrenProfilePage extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( role == "P"
width: 359, ? Container(
height: 178,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 359, width: 359,
height: 128, height: 178,
clipBehavior: Clip.antiAlias, child: Column(
decoration: ShapeDecoration(
image: DecorationImage(
image: AssetImage("lib/assets/banner.png"),
fit: BoxFit.cover,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
shadows: [
BoxShadow(
color: Color(0x19000000),
blurRadius: 20,
offset: Offset(0, 2),
spreadRadius: 0,
)
],
),
),
const SizedBox(height: 14),
Container(
child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( Container(
padding: const EdgeInsets.symmetric( width: 359,
horizontal: 40, vertical: 12), height: 128,
clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: Color(0xFF48B62C), image: DecorationImage(
image:
AssetImage("lib/assets/banner.png"),
fit: BoxFit.cover,
),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: borderRadius: BorderRadius.circular(10),
BorderRadius.circular(4)), ),
shadows: [ shadows: [
BoxShadow( BoxShadow(
color: Color(0x3F000000), color: Color(0x19000000),
blurRadius: 4, blurRadius: 20,
offset: Offset(0, 1), offset: Offset(0, 2),
spreadRadius: 0, spreadRadius: 0,
) )
], ],
), ),
),
const SizedBox(height: 8),
Container(
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.center, MainAxisAlignment.start,
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.center, CrossAxisAlignment.start,
children: [ children: [
Text( Container(
'Play Here ', padding: const EdgeInsets.symmetric(
style: TextStyle( horizontal: 40, vertical: 18), //play game button
color: Colors.white, decoration: ShapeDecoration(
fontSize: 14, color: Color(0xFF48B62C),
fontFamily: 'Poppins', shape: RoundedRectangleBorder(
fontWeight: FontWeight.w600, borderRadius:
height: 0.06, BorderRadius.circular(4)),
shadows: [
BoxShadow(
color: Color(0x3F000000),
blurRadius: 4,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
Text(
'Play Here ',
style: TextStyle(
color: Colors.white,
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
height: 0.06,
),
),
],
), ),
), ),
], ],
...@@ -634,10 +645,8 @@ class ChildrenProfilePage extends StatelessWidget { ...@@ -634,10 +645,8 @@ class ChildrenProfilePage extends StatelessWidget {
), ),
], ],
), ),
), )
], : Container(),
),
),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
...@@ -652,228 +661,235 @@ class ChildrenProfilePage extends StatelessWidget { ...@@ -652,228 +661,235 @@ class ChildrenProfilePage extends StatelessWidget {
), ),
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
SingleChildScrollView( Padding(
child: Row( padding: EdgeInsets.only(
mainAxisSize: MainAxisSize.min, left: MediaQuery.of(context).size.width * 0.04),
mainAxisAlignment: MainAxisAlignment.start, child: SingleChildScrollView(
crossAxisAlignment: CrossAxisAlignment.start, child: Row(
children: [ mainAxisSize: MainAxisSize.min,
GestureDetector( mainAxisAlignment: MainAxisAlignment.start,
onTap: () { crossAxisAlignment: CrossAxisAlignment.start,
Navigator.push( children: [
context, GestureDetector(
MaterialPageRoute( onTap: () {
builder: (context) => ReportKidsViewPage( Navigator.push(
sid: userDetails.id)), context,
); MaterialPageRoute(
}, builder: (context) =>
child: Container( ReportKidsViewPage(
width: MediaQuery.of(context).size.width * 0.4, sid: userDetails.id)),
height: 135, );
child: Stack( },
children: [ child: Container(
Positioned( width:
left: 0, MediaQuery.of(context).size.width * 0.4,
top: 0, height: 135,
child: Container( child: Stack(
width: children: [
MediaQuery.of(context).size.width, Positioned(
height: 135, left: 0,
decoration: ShapeDecoration( top: 0,
color: Color(0xFFF1EFFF), child: Container(
shape: RoundedRectangleBorder( width:
borderRadius: MediaQuery.of(context).size.width,
BorderRadius.circular(8.44), height: 135,
decoration: ShapeDecoration(
color: Color(0xFFF1EFFF),
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(8.44),
),
), ),
), ),
), ),
), Positioned(
Positioned( left: 16,
left: 16, top: 17,
top: 17, child: Container(
child: Container( width: 119.18,
width: 119.18, height: 100.88,
height: 100.88, child: Column(
child: Column( mainAxisSize: MainAxisSize.min,
mainAxisSize: MainAxisSize.min, mainAxisAlignment:
mainAxisAlignment: MainAxisAlignment.start,
MainAxisAlignment.start, crossAxisAlignment:
crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start, children: [
children: [ Padding(
Padding( padding:
padding: const EdgeInsets.fromLTRB(0, 0, 0, 5),
const EdgeInsets.fromLTRB( child: Container(
0, 0, 0, 10), width: 16.88,
child: Container( height: 16.88,
width: 16.88, clipBehavior: Clip.antiAlias,
height: 16.88, decoration: BoxDecoration(),
clipBehavior: Clip.antiAlias, child: Stack(children: [
decoration: BoxDecoration(), Icon(
child: Stack(children: [ Icons.person_3,
Icon( color: Colors.black26,
Icons.book, ),
color: Colors.black26, ]),
), ),
]),
), ),
), const SizedBox(height: 0),
const SizedBox(height: 1), SizedBox(
SizedBox( width: 119.18,
width: 119.18, child: Text.rich(
child: Text.rich( TextSpan(
TextSpan( children: [
children: [ TextSpan(
TextSpan( text: 'Monthly \npsycholo. report \n ',
text: 'Monthly \n ', style: TextStyle(
style: TextStyle( color:
color: Color(0xFF403572),
Color(0xFF403572), fontSize: 14,
fontSize: 14, fontFamily: 'poppins',
fontFamily: 'Roboto', fontWeight:
fontWeight: FontWeight.w500,
FontWeight.w500, // letterSpacing: 0.08,
height: 0.09, height: 0.9,
),
), ),
), ],
], ),
), ),
), ),
), const SizedBox(height: 1),
const SizedBox(height: 12), SizedBox(
SizedBox( width: 119.18,
width: 119.18, child: Opacity(
child: Opacity( opacity: 0.70,
opacity: 0.70, child: Text(
child: Text( 'Some short description of this type of report.',
'Some short description of this type of report.', style: TextStyle(
style: TextStyle( color: Color(0xFF8DAEAE),
color: Color(0xFF8DAEAE), fontSize: 9.55,
fontSize: 10.55, fontFamily: 'poppins',
fontFamily: 'Roboto', fontWeight:
fontWeight: FontWeight.w400, FontWeight.w400,
height: 0, height: 0,
),
), ),
), ),
), ),
), ],
], ),
), ),
), ),
), ],
], ),
), ),
), ),
), SizedBox(
SizedBox( width: 10,
width: 10, ),
), GestureDetector(
GestureDetector( onTap: () {
onTap: () { Navigator.push(
Navigator.push( context,
context, MaterialPageRoute(
MaterialPageRoute( builder: (context) =>
builder: (context) => progressReport()));
progressReport())); },
}, child: Container(
child: Container( width: 150,
width: 150, height: 135,
height: 135, child: Stack(
child: Stack( children: [
children: [ Positioned(
Positioned( left: 0,
left: 0, top: 0,
top: 0, child: Container(
child: Container( width: 170,
width: 170, height: 135,
height: 135, decoration: ShapeDecoration(
decoration: ShapeDecoration( color: Color(0xFFC4F3F3),
color: Color(0xFFC4F3F3), shape: RoundedRectangleBorder(
shape: RoundedRectangleBorder( borderRadius:
borderRadius: BorderRadius.circular(8.44),
BorderRadius.circular(8.44), ),
), ),
), ),
), ),
), Positioned(
Positioned( left: 16,
left: 16, top: 17,
top: 17, child: Container(
child: Container( width: 119.18,
width: 119.18, height: 100.88,
height: 100.88, child: Column(
child: Column( mainAxisSize: MainAxisSize.min,
mainAxisSize: MainAxisSize.min, mainAxisAlignment:
mainAxisAlignment: MainAxisAlignment.start,
MainAxisAlignment.start, crossAxisAlignment:
crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start, children: [
children: [ Padding(
Padding( padding:
padding: const EdgeInsets.fromLTRB(0, 0, 0, 5),
const EdgeInsets.fromLTRB( child: Container(
0, 0, 0, 10), width: 16.88,
child: Container( height: 16.88,
width: 16.88, clipBehavior: Clip.antiAlias,
height: 16.88, decoration: BoxDecoration(),
clipBehavior: Clip.antiAlias, child: Stack(children: [
decoration: BoxDecoration(), Icon(
child: Stack(children: [ Icons.calendar_month,
Icon( color: Colors.black26,
Icons.book, ),
color: Colors.black26, ]),
), ),
]),
), ),
), const SizedBox(height: 1),
const SizedBox(height: 1), SizedBox(
SizedBox( width: 119.18,
width: 119.18, child: Text.rich(
child: Text.rich( TextSpan(
TextSpan( children: [
children: [ TextSpan(
TextSpan( text: 'Monthly prediction report \n',
text: 'Monthly \n', style: TextStyle(
style: TextStyle( color:
color: Color(0xFF479696),
Color(0xFF479696), fontSize: 14,
fontSize: 14, fontFamily: 'Poppins',
fontFamily: 'Roboto', fontWeight:
fontWeight: FontWeight.w500,
FontWeight.w500, height: 0.9,
height: 0.09, ),
), ),
), ],
], ),
), ),
), ),
), const SizedBox(height: 1),
const SizedBox(height: 12), SizedBox(
SizedBox( width: 119.18,
width: 119.18, child: Opacity(
child: Opacity( opacity: 0.70,
opacity: 0.70, child: Text(
child: Text( 'Some short description of this type of report.',
'Some short description of this type of report.', style: TextStyle(
style: TextStyle( color: Color(0xFF8DAEAE),
color: Color(0xFF8DAEAE), fontSize: 9.55,
fontSize: 10.55, fontFamily: 'poppins',
fontFamily: 'Roboto', fontWeight:
fontWeight: FontWeight.w400, FontWeight.w400,
height: 0, height: 0,
),
), ),
), ),
), ),
), ],
], ),
), ),
), ),
), ],
], ),
), ),
), ),
), ],
], ),
), ),
), ),
], ],
......
...@@ -4,8 +4,12 @@ import 'package:cloud_firestore/cloud_firestore.dart'; ...@@ -4,8 +4,12 @@ import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mobile_application_kids/Attendance.dart'; import 'package:mobile_application_kids/Attendance.dart';
import 'package:mobile_application_kids/ChatScreen.dart';
import 'package:mobile_application_kids/ChildrenActivity.dart'; import 'package:mobile_application_kids/ChildrenActivity.dart';
import 'package:mobile_application_kids/ReportKids.dart'; import 'package:mobile_application_kids/ReportKids.dart';
import 'package:mobile_application_kids/TeacherProfile.dart';
import 'package:mobile_application_kids/calendar.dart';
import 'package:mobile_application_kids/teacherhome.dart';
import 'CheckKids.dart'; import 'CheckKids.dart';
import 'ChildrenHomePage.dart'; import 'ChildrenHomePage.dart';
import 'addstudent.dart'; import 'addstudent.dart';
...@@ -32,13 +36,23 @@ class ClassroomViewPage extends StatelessWidget { ...@@ -32,13 +36,23 @@ class ClassroomViewPage extends StatelessWidget {
double width = MediaQuery.of(context).size.width; double width = MediaQuery.of(context).size.width;
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: IconButton( title: Text(' '),
icon: Icon(Icons.arrow_back), actions: [
onPressed: () { Container(
Navigator.pop(context); alignment: Alignment.centerRight,
}, padding: EdgeInsets.only(right: 16),
), child: Text('Class Room',
title: Text('Class Room '), style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
), ),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Padding( child: Padding(
...@@ -54,68 +68,104 @@ class ClassroomViewPage extends StatelessWidget { ...@@ -54,68 +68,104 @@ class ClassroomViewPage extends StatelessWidget {
), ),
), ),
SizedBox(height: 10), SizedBox(height: 10),
Container( Center(
height: 35.0, child: Padding(
width: 120.0, padding: const EdgeInsets.all(8.8),
decoration: BoxDecoration( child: Container(
color: Color.fromARGB(203, 164, 88, 177), width: MediaQuery.of(context).size.width * 1,
borderRadius: BorderRadius.circular(4.0), height: MediaQuery.of(context).size.height / 12,
), child: SingleChildScrollView(
child: TextButton( scrollDirection: Axis.horizontal,
onPressed: () { child: Row(
Navigator.push( mainAxisAlignment: MainAxisAlignment.start,
context, crossAxisAlignment: CrossAxisAlignment.center, // Adjusted crossAxisAlignment
MaterialPageRoute( children: [
builder: (context) => Container(
AddStudentPage(classname: documents)), child: SingleChildScrollView(
); scrollDirection: Axis.horizontal, // Enable horizontal scrolling
}, child: Container(
child: Text( width: 333,
'Add Student', padding: const EdgeInsets.symmetric(horizontal: 50, vertical: 5),
style: TextStyle( decoration: ShapeDecoration(
color: Colors.white, color: Color.fromARGB(255, 255, 255, 255),
), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(6)),
), shadows: [
), BoxShadow(
), color: Color(0x3F000000),
SizedBox(height: 10), blurRadius: 6,
Padding( offset: Offset(0, 1),
padding: EdgeInsets.fromLTRB(width * 0.1, 20, width * 0.1, 20), spreadRadius: 0,
child: Container( )
width: 293, ],
height: 44, ),
decoration: ShapeDecoration( child: Row(
color: Colors.white, mainAxisAlignment: MainAxisAlignment.center,
shape: RoundedRectangleBorder( crossAxisAlignment: CrossAxisAlignment.center, // Adjusted crossAxisAlignment
borderRadius: BorderRadius.circular(8), children: [
), Container(
shadows: [ width: 36,
BoxShadow( height: 36,
color: Color(0x3F000000), decoration: ShapeDecoration(
blurRadius: 4, image: DecorationImage(
offset: Offset(0, 1), image: AssetImage('lib/assets/Vector 2.png'),
spreadRadius: 0, fit: BoxFit.fill,
), ),
], shape: OvalBorder(),
), ),
child: TextField( ),
controller: _searchController, const SizedBox(width: 6),
onChanged: (value) { FutureBuilder<String>(
_searchTermController.add(value); future: getStudentCount(),
}, builder: (context, snapshot) {
decoration: InputDecoration( if (snapshot.connectionState == ConnectionState.waiting) {
hintText: 'Search', return CircularProgressIndicator(); // Show loading indicator
border: InputBorder.none, }
icon: Padding( if (snapshot.hasError) {
padding: const EdgeInsets.all(8.0), return Text('Error: ${snapshot.error}'); // Show error message
child: Icon(Icons.search), }
// Use the result of getStudentCount
return Text(
'Children Count ' + (snapshot.data ?? '0'), // Default to '0' if data is null
style: TextStyle(
color: Colors.black,
fontSize: 15,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
),
);
},
),
const SizedBox(width: 8),
GestureDetector(
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AddStudentPage(classname: documents)),
),
child: Container(
margin: EdgeInsets.only(left: 32.0),
decoration: BoxDecoration(
color: Colors.blueAccent,
borderRadius: BorderRadius.circular(4.20),
),
child: Icon(
Icons.add,
color: Colors.white,
),
),
),
],
),
),
),
),
],
), ),
suffixIcon: Icon(Icons.mic),
contentPadding: EdgeInsets.all(8),
), ),
), ),
), ),
), ),
SizedBox(height: 10), SizedBox(height: 10),
GridView.count( GridView.count(
crossAxisCount: 2, crossAxisCount: 2,
...@@ -324,7 +374,7 @@ class ClassroomViewPage extends StatelessWidget { ...@@ -324,7 +374,7 @@ class ClassroomViewPage extends StatelessWidget {
right: 8, right: 8,
bottom: 8, bottom: 8,
child: Image.asset( child: Image.asset(
"lib/assets/Vector22.png", // Replace with your image URL "lib/assets/Vector22.png",
width: 59, width: 59,
height: 81, height: 81,
fit: BoxFit.cover, fit: BoxFit.cover,
...@@ -397,7 +447,7 @@ class ClassroomViewPage extends StatelessWidget { ...@@ -397,7 +447,7 @@ class ClassroomViewPage extends StatelessWidget {
right: 8, right: 8,
bottom: 8, bottom: 8,
child: Image.asset( child: Image.asset(
"lib/assets/Vector23.png", // Replace with your image URL "lib/assets/Vector23.png",
width: 59, width: 59,
height: 81, height: 81,
fit: BoxFit.cover, fit: BoxFit.cover,
...@@ -490,7 +540,7 @@ class ClassroomViewPage extends StatelessWidget { ...@@ -490,7 +540,7 @@ class ClassroomViewPage extends StatelessWidget {
right: 8, right: 8,
bottom: 8, bottom: 8,
child: Image.asset( child: Image.asset(
"lib/assets/Vector24.png", // Replace with your image URL "lib/assets/Vector24.png",
width: 59, width: 59,
height: 81, height: 81,
fit: BoxFit.cover, fit: BoxFit.cover,
...@@ -501,71 +551,79 @@ class ClassroomViewPage extends StatelessWidget { ...@@ -501,71 +551,79 @@ class ClassroomViewPage extends StatelessWidget {
), ),
), ),
), ),
Padding( GestureDetector(
padding: const EdgeInsets.all(10.0), onTap: () {
child: Container( Navigator.of(context).push(MaterialPageRoute(
width: 170, builder: (_) => CalendarScreen(),
height: 85, ));
clipBehavior: Clip.antiAlias, },
decoration: ShapeDecoration( child: Padding(
gradient: LinearGradient( padding: const EdgeInsets.all(10.0),
begin: Alignment(1.00, -0.01), child: Container(
end: Alignment(-1, 0.01), width: 170,
colors: [Color(0xFF079DF2), Color(0xFF7ED0FF)], height: 85,
), clipBehavior: Clip.antiAlias,
shape: RoundedRectangleBorder( decoration: ShapeDecoration(
borderRadius: BorderRadius.circular(4), gradient: LinearGradient(
begin: Alignment(1.00, -0.01),
end: Alignment(-1, 0.01),
colors: [Color(0xFF079DF2), Color(0xFF7ED0FF)],
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(4),
),
shadows: [
BoxShadow(
color: Color(0x3F000000),
blurRadius: 2,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
), ),
shadows: [ child: Stack(
BoxShadow( children: [
color: Color(0x3F000000), Positioned(
blurRadius: 2, left: 8,
offset: Offset(0, 1), top: 35,
spreadRadius: 0, child: Container(
) child: Column(
], mainAxisSize: MainAxisSize.min,
), mainAxisAlignment: MainAxisAlignment.start,
child: Stack( crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Positioned( Text(
left: 8, 'Calendar',
top: 35, style: TextStyle(
child: Container( color: Colors.white,
child: Column( fontSize: 16,
mainAxisSize: MainAxisSize.min, fontFamily: 'Poppins',
mainAxisAlignment: MainAxisAlignment.start, fontWeight: FontWeight.w700,
crossAxisAlignment: CrossAxisAlignment.start, height: 0.06,
children: [ letterSpacing: -0.64,
Text( ),
'Calendar',
style: TextStyle(
color: Colors.white,
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.06,
letterSpacing: -0.64,
), ),
), const SizedBox(height: 8),
const SizedBox(height: 8), ],
], ),
), ),
), ),
), Positioned(
Positioned( right: 8,
right: 8, bottom: 8,
bottom: 8, child: Image.asset(
child: Image.asset( "lib/assets/Vector25.png", // Replace with your image URL
"lib/assets/Vector25.png", // Replace with your image URL width: 59,
width: 59, height: 81,
height: 81, fit: BoxFit.cover,
fit: BoxFit.cover, ),
), ),
), ],
], ),
), ),
), ),
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(MaterialPageRoute(
...@@ -644,6 +702,66 @@ class ClassroomViewPage extends StatelessWidget { ...@@ -644,6 +702,66 @@ class ClassroomViewPage extends StatelessWidget {
), ),
), ),
), ),
bottomNavigationBar: BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.chat),
label: 'Chat',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
selectedItemColor: Color.fromARGB(255, 103, 103, 103),
onTap: (index) {
// Handle bottom navigation item tap
switch (index) {
case 0:
// Navigate to Home
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TeacherHomePage()),
);
break;
case 1:
// Navigate to Chat
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatScreen()),
);
break;
case 2:
// Navigate to Profile
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeacherProfilePage(uid: user?.uid)),
);
break;
}
},
),
); );
} }
Future<String> getStudentCount() async {
try {
final QuerySnapshot<Map<String, dynamic>> snapshot =
await FirebaseFirestore.instance
.collection('students')
.where('className', isEqualTo: documents)
.get();
final int count = snapshot.size;
return count.toString();
} catch (e) {
print("Error getting student count: $e");
return '0';
}
}
} }
...@@ -2,83 +2,99 @@ import 'package:awesome_dialog/awesome_dialog.dart'; ...@@ -2,83 +2,99 @@ import 'package:awesome_dialog/awesome_dialog.dart';
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class KidsReportPage extends StatefulWidget { class KidsReportPage extends StatefulWidget {
String id; String id;
KidsReportPage({required this.id}); KidsReportPage({required this.id});
@override @override
_KidsReportPageState createState() => _KidsReportPageState(id: id); _KidsReportPageState createState() => _KidsReportPageState(id: id);
} }
class _KidsReportPageState extends State<KidsReportPage> { class _KidsReportPageState extends State<KidsReportPage> {
String id; String id;
_KidsReportPageState({required this.id}); _KidsReportPageState({required this.id});
List<String> dropdownValues = ['Select', '1', '2', '3', '4', '5']; List<String> dropdownValues = ['Select', '1', '2', '3', '4', '5'];
Map<String, String?> understandingDropdownMap = { Map<String, String?> understandingDropdownMap = {
'Understanding commands': 'Select', 'Understanding commands': 'Select',
'Answer questions': 'Select', 'Answer questions': 'Select',
'Keeping eye contact': 'Select', 'Keeping eye contact': 'Select',
'Following rules': 'Select', 'Following rules': 'Select',
}; };
Map<String, String?> movementsDropdownMap = { Map<String, String?> movementsDropdownMap = {
'Motor activities': 'Select', 'Motor activities': 'Select',
'Correct posture': 'Select', 'Correct posture': 'Select',
}; };
Map<String, String?> manipulatingDropdownMap = { Map<String, String?> manipulatingDropdownMap = {
'Can build/create new things': 'Select', 'Can build/create new things': 'Select',
'Knows how to handle accessories': 'Select', 'Knows how to handle accessories': 'Select',
}; };
Map<String, String?> socializingDropdownMap = { Map<String, String?> socializingDropdownMap = {
'Play with groups': 'Select', 'Play with groups': 'Select',
'Help each other': 'Select', 'Help each other': 'Select',
'Friendly towards peers': 'Select', 'Friendly towards peers': 'Select',
'Close to teacher': 'Select', 'Close to teacher': 'Select',
}; };
Map<String, String?> speechDropdownMap = { Map<String, String?> speechDropdownMap = {
'Communicate well': 'Select', 'Communicate well': 'Select',
'Like singing': 'Select', 'Like singing': 'Select',
}; };
Map<String, String?> recognitionDropdownMap = { Map<String, String?> recognitionDropdownMap = {
'Can express with pictures and words': 'Select', 'Can express with pictures and words': 'Select',
'Identify shapes': 'Select', 'Identify shapes': 'Select',
'Knows Primary colors.': 'Select', 'Knows Primary colors.': 'Select',
'Identify basic objects in the environment': 'Select', 'Identify basic objects in the environment': 'Select',
}; };
Map<String, String?> habitsDropdownMap = { Map<String, String?> habitsDropdownMap = {
'Organized': 'Select', 'Organized': 'Select',
'Have good eating habits': 'Select', 'Have good eating habits': 'Select',
'Taking care of own needs': 'Select', 'Taking care of own needs': 'Select',
}; };
Map<String, String?> personalHygieneDropdownMap = { Map<String, String?> personalHygieneDropdownMap = {
'Stay clean': 'Select', 'Stay clean': 'Select',
'Keep the workplace and environment clean': 'Select', 'Keep the workplace and environment clean': 'Select',
}; };
Map<String, String?> personalityDropdownMap = { Map<String, String?> personalityDropdownMap = {
'Act according to the situation': 'Select', 'Act according to the situation': 'Select',
'Finish allocated work': 'Select', 'Finish allocated work': 'Select',
'More active': 'Select', 'More active': 'Select',
'Less active': 'Select', 'Less active': 'Select',
}; };
final _formkey = GlobalKey<FormState>(); final _formkey = GlobalKey<FormState>();
final _auth = FirebaseAuth.instance; final _auth = FirebaseAuth.instance;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Student Report'), title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text('Student Report',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
), ),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Center( child: Center(
...@@ -190,7 +206,7 @@ class _KidsReportPageState extends State<KidsReportPage> { ...@@ -190,7 +206,7 @@ class _KidsReportPageState extends State<KidsReportPage> {
), ),
); );
} }
Widget _buildDropdownSection({ Widget _buildDropdownSection({
required String title, required String title,
required Map<String, String?> dropdownMap, required Map<String, String?> dropdownMap,
...@@ -257,16 +273,16 @@ class _KidsReportPageState extends State<KidsReportPage> { ...@@ -257,16 +273,16 @@ class _KidsReportPageState extends State<KidsReportPage> {
], ],
); );
} }
postDetailsToFirestore(context) async { postDetailsToFirestore(context) async {
FirebaseFirestore firebaseFirestore = FirebaseFirestore.instance; FirebaseFirestore firebaseFirestore = FirebaseFirestore.instance;
var user = _auth.currentUser; var user = _auth.currentUser;
CollectionReference ref = CollectionReference ref =
FirebaseFirestore.instance.collection('reports'); FirebaseFirestore.instance.collection('reports');
// Constructing the data to be saved // Constructing the data to be saved
Map<String, dynamic> data = {}; Map<String, dynamic> data = {};
understandingDropdownMap.forEach((key, value) { understandingDropdownMap.forEach((key, value) {
...@@ -297,16 +313,18 @@ class _KidsReportPageState extends State<KidsReportPage> { ...@@ -297,16 +313,18 @@ class _KidsReportPageState extends State<KidsReportPage> {
data[key] = value; data[key] = value;
}); });
data['sId'] = id; data['sId'] = id;
await ref.doc(id).set(data); await ref.doc(id).set(data);
AwesomeDialog( AwesomeDialog(
context: context, context: context,
dialogType: DialogType.success, dialogType: DialogType.success,
animType: AnimType.rightSlide, animType: AnimType.rightSlide,
title: 'Successfully Created', title: 'Successfully Created',
btnOkOnPress: () {}, btnOkOnPress: () {
)..show(); // Navigate back to the previous page
} Navigator.pop(context);
},
)..show();
} }
}
\ No newline at end of file
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mobile_application_kids/teacherhome.dart';
import 'ChatScreen.dart';
import 'TeacherProfile.dart';
import 'kidsReport.dart'; // Import the AddClassroomPage file
class ReportKidsViewPage extends StatelessWidget { class ReportKidsViewPage extends StatelessWidget {
late User? user; late final Stream<QuerySnapshot> _reportsStream;
late final Stream<QuerySnapshot> _usersStream;
late String sid; late String sid;
ReportKidsViewPage({sid}) {
this.sid = sid; ReportKidsViewPage({required this.sid}) {
print(sid);
user = FirebaseAuth.instance.currentUser;
initializeStreams(); initializeStreams();
} }
void initializeStreams() { void initializeStreams() {
_usersStream = FirebaseFirestore.instance _reportsStream = FirebaseFirestore.instance
.collection('reports') .collection('reports')
.where('sId', isEqualTo: sid) .where('sId', isEqualTo: sid)
.snapshots(); .snapshots();
...@@ -27,325 +18,80 @@ class ReportKidsViewPage extends StatelessWidget { ...@@ -27,325 +18,80 @@ class ReportKidsViewPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return WillPopScope( return Scaffold(
onWillPop: () async { appBar: AppBar(
// Disable the back button press title: Text('Student Report'),
return false; ),
}, body: StreamBuilder<QuerySnapshot>(
child: Scaffold( stream: _reportsStream,
appBar: AppBar( builder: (context, snapshot) {
leading: IconButton( if (snapshot.connectionState == ConnectionState.waiting) {
icon: Icon(Icons.arrow_back), return Center(child: CircularProgressIndicator());
onPressed: () { }
Navigator.of(context).pop();
},
),
actions: [
Text(
'Report ',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
)
],
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Report View',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
height: 0.06,
),
),
SizedBox(height: 30),
Expanded(
child: StreamBuilder<QuerySnapshot>(
stream: _usersStream,
builder: (context, snapshot) {
print("--------------------------------------");
print(snapshot.data!.docs.length);
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
}
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
}
var itemCount = snapshot.data!.docs.length;
return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount:
1, // Adjust this value to control the number of items per row
crossAxisSpacing:
8.0, // Adjust spacing between items horizontally
mainAxisSpacing:
8.0, // Adjust spacing between items vertically
),
itemCount: itemCount,
itemBuilder: (context, index) {
var document = snapshot.data!.docs[index];
index++;
var _valu = document['q' + index.toString()];
return Container( if (snapshot.hasError) {
color: Color(0xFFE5E5E5), return Center(child: Text('Error: ${snapshot.error}'));
child: SingleChildScrollView( }
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Container(
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(20),
// boxShadow: [
// BoxShadow(
// color: Colors.black,
// offset: const Offset(
// 3.0,
// 3.0,
// ), //Offset
// blurRadius: 10.0,
// spreadRadius: 2.0,
// ), //BoxShadow
// BoxShadow(
// color: Colors.white,
// offset: const Offset(0.0, 0.0),
// blurRadius: 0.0,
// spreadRadius: 0.0,
// ), //BoxShadow
// ],
// ), //BoxDecoration
/** CheckboxListTile Widget **/ var docs = snapshot.data!.docs;
child: CheckboxListTile( if (docs.isEmpty) {
title: const Text('Understanding'), return Center(child: Text('No report data available'));
subtitle: const Text( }
'Understanding commands, Answer questions, Keeping eye contact, Following rules.'),
// secondary: CircleAvatar(
// backgroundImage: NetworkImage(
// "https://pbs.twimg.com/profile_images/1304985167476523008/QNHrwL2q_400x400.jpg"), //NetworkImage
// radius: 20,
// ),
autofocus: false,
isThreeLine: true,
activeColor: Colors.green,
checkColor: Colors.white,
selected: document["q1"],
value: document["q1"],
onChanged: (bool? value) {
// setState(() {
// _valu1 = value ?? false;
// });
},
), //CheckboxListTile
),
SizedBox(height: 20),
Container(
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(20),
// boxShadow: [
// BoxShadow(
// color: Colors.black,
// offset: const Offset(
// 3.0,
// 3.0,
// ), //Offset
// blurRadius: 10.0,
// spreadRadius: 2.0,
// ), //BoxShadow
// BoxShadow(
// color: Colors.white,
// offset: const Offset(0.0, 0.0),
// blurRadius: 0.0,
// spreadRadius: 0.0,
// ), //BoxShadow
// ],
// ), //BoxDecoration
/** CheckboxListTile Widget **/ return ListView.builder(
child: CheckboxListTile( itemCount: docs.length,
title: const Text('Movements'), itemBuilder: (context, index) {
subtitle: const Text( var document = docs[index].data() as Map<String, dynamic>;
'Motor activities, Correct posture.'), return _buildReportItem('Report ${index + 1}', document);
// secondary: CircleAvatar( },
// backgroundImage: NetworkImage( );
// "https://pbs.twimg.com/profile_images/1304985167476523008/QNHrwL2q_400x400.jpg"), //NetworkImage },
// radius: 20, ),
// ), );
autofocus: false, }
isThreeLine: true,
activeColor: Colors.green,
checkColor: Colors.white,
selected: document["q2"],
value: document["q2"],
onChanged: (bool? value) {
// setState(() {
// _valu2 = value ?? false;
// });
},
), //CheckboxListTile
),
SizedBox(height: 20),
Container(
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(20),
// boxShadow: [
// BoxShadow(
// color: Colors.black,
// offset: const Offset(
// 3.0,
// 3.0,
// ), //Offset
// blurRadius: 10.0,
// spreadRadius: 2.0,
// ), //BoxShadow
// BoxShadow(
// color: Colors.white,
// offset: const Offset(0.0, 0.0),
// blurRadius: 0.0,
// spreadRadius: 0.0,
// ), //BoxShadow
// ],
// ), //BoxDecoration
/** CheckboxListTile Widget **/ Widget _buildReportItem(String title, Map<String, dynamic> data) {
child: CheckboxListTile( // Exclude the 'sId' field from the data
title: const Text('Manipulating'), data.remove('sId');
subtitle: const Text(
'Can build/create new things, Knows how to handle accessories'),
// secondary: CircleAvatar(
// backgroundImage: NetworkImage(
// "https://pbs.twimg.com/profile_images/1304985167476523008/QNHrwL2q_400x400.jpg"), //NetworkImage
// radius: 20,
// ),
autofocus: false,
isThreeLine: true,
activeColor: Colors.green,
checkColor: Colors.white,
selected: document["q3"],
value: document["q3"],
onChanged: (bool? value) {
// setState(() {
// _valu3 = value ?? false;
// });
},
), //CheckboxListTile
),
SizedBox(height: 20),
Container(
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(20),
// boxShadow: [
// BoxShadow(
// color: Colors.black,
// offset: const Offset(
// 3.0,
// 3.0,
// ), //Offset
// blurRadius: 10.0,
// spreadRadius: 2.0,
// ), //BoxShadow
// BoxShadow(
// color: Colors.white,
// offset: const Offset(0.0, 0.0),
// blurRadius: 0.0,
// spreadRadius: 0.0,
// ), //BoxShadow
// ],
// ), //BoxDecoration
/** CheckboxListTile Widget **/ return Card(
child: CheckboxListTile( margin: EdgeInsets.symmetric(vertical: 8, horizontal: 16),
title: const Text('Socializing'), child: Padding(
subtitle: const Text( padding: EdgeInsets.all(16),
'Play with groups, Help each other, Friendly towards peers.'), child: Column(
// secondary: CircleAvatar( crossAxisAlignment: CrossAxisAlignment.start,
// backgroundImage: NetworkImage( children: [
// "https://pbs.twimg.com/profile_images/1304985167476523008/QNHrwL2q_400x400.jpg"), //NetworkImage Text(
// radius: 20, title,
// ), style: TextStyle(
autofocus: false, fontSize: 18,
isThreeLine: true, fontWeight: FontWeight.bold,
activeColor: Colors.green, ),
checkColor: Colors.white, ),
selected: document["q4"], SizedBox(height: 8),
value: document["q4"], Column(
onChanged: (bool? value) { crossAxisAlignment: CrossAxisAlignment.start,
// setState(() { children: data.entries.map((entry) {
// _valu4 = value ?? false; return Padding(
// }); padding: EdgeInsets.symmetric(vertical: 4),
}, child: Row(
), //CheckboxListTile mainAxisAlignment: MainAxisAlignment.spaceBetween,
), children: [
], Text(
), entry.key,
), style: TextStyle(
); fontWeight: FontWeight.bold,
}, ),
); ),
}, Text(entry.value ?? 'Not provided'),
],
), ),
), );
], }).toList(),
), ),
), ],
bottomNavigationBar: BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.chat),
label: 'Chat',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
selectedItemColor: Colors.blue,
onTap: (index) {
switch (index) {
case 0:
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TeacherHomePage()),
);
break;
case 1:
// Navigate to Chat
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatScreen()),
);
break;
case 2:
// Navigate to Profile
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeacherProfilePage(
uid: user?.uid,
)),
);
break;
}
},
),
), ),
); ),
} );
} }
}
\ No newline at end of file
...@@ -22,19 +22,28 @@ class KidsReportsPage extends StatelessWidget { ...@@ -22,19 +22,28 @@ class KidsReportsPage extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( // Text(
'Bright Sparkle ', // 'Bright Sparkle ',
style: TextStyle( // style: TextStyle(
fontSize: 18, // color: Color(0xFF11324D),
fontWeight: FontWeight.bold, // fontSize: 24,
// fontFamily: 'Poppins',
// fontWeight: FontWeight.w500,
// height: 0.04,
// letterSpacing: -0.96,
// ),
// ),
SizedBox(height: 20), // Add space here
Text(
'Select Kids ',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
height: 0.06,
),
), ),
),
Text(
'Select Kid',
style: TextStyle(
fontSize: 18,
),
),
SizedBox(height: 16), SizedBox(height: 16),
ListView.builder( ListView.builder(
shrinkWrap: true, shrinkWrap: true,
......
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:mobile_application_kids/teacherchat.dart';
import 'package:mobile_application_kids/classroomview.dart';
import 'package:mobile_application_kids/addclassroom.dart';
import 'package:mobile_application_kids/teacherhome.dart';
import 'package:pie_chart/pie_chart.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'ChatScreen.dart';
import 'TeacherProfile.dart';
class progressReport extends StatefulWidget {
@override
_progressReportState createState() => _progressReportState();
}
class _progressReportState extends State<progressReport> {
late User? user;
late final Stream<QuerySnapshot> _usersStream;
int absCount = 0;
int preCount = 0;
@override
void initState() {
super.initState();
user = FirebaseAuth.instance.currentUser;
initializeStreams();
getAllStudentCountPresentAbs();
}
Map<String, double> dataMap = {
"Good": 0,
"Netural": 0,
"Week": 0,
};
void initializeStreams() {
_usersStream = FirebaseFirestore.instance
.collection('students')
.where('user', isEqualTo: user?.uid)
.snapshots();
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
// Disable the back button press
return false;
},
child: Scaffold(
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
Navigator.of(context).pop();
},
),
actions: [
Text(
'Progress Report ',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
)
],
),
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Text(
// 'Activity Scale ',
// style: TextStyle(
// color: Color(0xFF11324D),
// fontSize: 24,
// fontFamily: 'Poppins',
// fontWeight: FontWeight.w500,
// height: 0.04,
// letterSpacing: -0.96,
// ),
// ),
Padding(
padding: const EdgeInsets.fromLTRB(5, 5, 0, 5),
child: Container(
width: 358,
height: 362,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: double.infinity,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Activity Scale ',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
height: 0.06,
),
),
],
),
),
const SizedBox(height: 30),
Container(
width: double.infinity,
height: 316,
padding: const EdgeInsets.only(
top: 16,
left: 18,
right: 17,
bottom: 18,
),
clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)),
shadows: [
BoxShadow(
color: Color(0x3F000000),
blurRadius: 3,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 300,
height: 282,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Container(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
SizedBox(
width: 157,
height: 13,
child: Text(
' ',
style: TextStyle(
color: Color(0xFF2B3674),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
height: 0.07,
letterSpacing: -0.28,
),
),
),
],
),
),
Center(
child: Container(
width: 300,
height: 250,
child: Stack(
children: [
PieChart(
dataMap: dataMap,
chartType: ChartType.disc,
chartRadius:
MediaQuery.of(context)
.size
.width /
2.2,
colorList: [
Color(0xFFFFD452),
Color(0xFFCE7BB0),
Color(0xFFFF8080)
],
legendOptions: LegendOptions(
showLegendsInRow: true,
legendPosition:
LegendPosition.bottom,
showLegends: true,
legendTextStyle: TextStyle(
fontWeight:
FontWeight.bold),
),
chartValuesOptions:
ChartValuesOptions(
showChartValueBackground:
true,
showChartValues: true,
showChartValuesInPercentage:
true,
showChartValuesOutside: false,
),
),
],
),
),
),
],
),
),
],
),
),
],
),
)),
SizedBox(
width: 10,
),
Padding(
padding: const EdgeInsets.fromLTRB(5, 5, 0, 5),
child: Container(
width: 358,
height: 362,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: double.infinity,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'LD Director ',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
height: 0.06,
),
),
],
),
),
const SizedBox(height: 30),
Container(
width: double.infinity,
height: 316,
padding: const EdgeInsets.only(
top: 16,
left: 18,
right: 17,
bottom: 18,
),
clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)),
shadows: [
BoxShadow(
color: Color(0x3F000000),
blurRadius: 3,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 300,
height: 282,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Container(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
SizedBox(
width: 157,
height: 13,
child: Text(
' ',
style: TextStyle(
color: Color(0xFF2B3674),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
height: 0.07,
letterSpacing: -0.28,
),
),
),
],
),
),
Center(
child: Container(
width: 300,
height: 250,
child: Stack(
children: [
charts.BarChart(
_createSampleData(),
animate: true,
vertical:
true, // To display horizontal bar chart
barRendererDecorator:
charts.BarLabelDecorator<
String>(),
domainAxis:
charts.OrdinalAxisSpec(),
),
],
),
),
),
],
),
),
],
),
),
],
),
)),
Padding(
padding: const EdgeInsets.fromLTRB(5, 5, 0, 5),
child: Container(
width: 358,
height: 362,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: double.infinity,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Assement Progress ',
style: TextStyle(
color: Color(0xFF21205B),
fontSize: 16,
fontFamily: 'Poppins',
fontWeight: FontWeight.w500,
height: 0.06,
),
),
],
),
),
const SizedBox(height: 30),
Container(
width: double.infinity,
height: 316,
padding: const EdgeInsets.only(
top: 16,
left: 18,
right: 17,
bottom: 18,
),
clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)),
shadows: [
BoxShadow(
color: Color(0x3F000000),
blurRadius: 3,
offset: Offset(0, 1),
spreadRadius: 0,
)
],
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 300,
height: 282,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Container(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
SizedBox(
width: 157,
height: 13,
child: Text(
' ',
style: TextStyle(
color: Color(0xFF2B3674),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
height: 0.07,
letterSpacing: -0.28,
),
),
),
],
),
),
Center(
child: Container(
width: 300,
height: 250,
child: Stack(
children: [
charts.BarChart(
_createSampleData(),
animate: true,
vertical:
true, // To display horizontal bar chart
barRendererDecorator:
charts.BarLabelDecorator<
String>(),
domainAxis:
charts.OrdinalAxisSpec(),
),
],
),
),
),
],
),
),
],
),
),
],
),
)),
],
),
),
),
bottomNavigationBar: BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.chat),
label: 'Chat',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
selectedItemColor: Colors.blue,
onTap: (index) async {
final prefs = await SharedPreferences.getInstance();
String rool = prefs.get('rool').toString();
// Handle bottom navigation item tap
if (index == 0) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TeacherHomePage()),
);
}
if (index == 1) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatScreen()),
);
}
if (index == 2) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeacherProfilePage(uid: user?.uid)),
);
}
},
),
),
);
}
Stream<QuerySnapshot> getStudentsStream(String genderFilter, int isCheck) {
return FirebaseFirestore.instance
.collection('students')
.where('user', isEqualTo: user?.uid)
.where('Sex', isEqualTo: genderFilter)
.where('isCheck', isEqualTo: isCheck)
.snapshots();
}
Future<String> getMaleStudentCount(String sex, int isCheck) async {
try {
QuerySnapshot snapshot = await getStudentsStream(sex, isCheck).first;
return snapshot.size.toString();
} catch (e) {
print('Error getting male student count: $e');
return '0';
}
}
Stream<QuerySnapshot> getAllStudentsStream(int isCheck) {
return FirebaseFirestore.instance
.collection('students')
.where('user', isEqualTo: user?.uid)
.where('isCheck', isEqualTo: isCheck)
.snapshots();
}
Future<String> getAllStudentCount(int isCheck) async {
try {
QuerySnapshot snapshot = await getAllStudentsStream(isCheck).first;
print('size' + snapshot.size.toString());
return snapshot.size.toString();
} catch (e) {
print('Error getting male student count: $e');
return '0';
}
}
Stream<QuerySnapshot> getAllStudentsStreams() {
return FirebaseFirestore.instance
.collection('students')
.where('user', isEqualTo: user?.uid)
.snapshots();
}
Future<void> getAllStudentCountPresentAbs() async {
try {
QuerySnapshot snapshot2 = await getAllStudentsStreams().first;
QuerySnapshot snapshot = await getAllStudentsStream(0).first;
QuerySnapshot snapshotAbs = await getAllStudentsStream(1).first;
preCount = snapshot.size;
absCount = snapshotAbs.size;
var pre = (snapshot.size / snapshot2.size) * 100;
var abs = (snapshotAbs.size / snapshot2.size) * 100;
setState(() {
dataMap["Good"] = 25.0;
dataMap["Netural"] = 35.0;
dataMap["Week"] = 40.0;
});
print("ss" + preCount.round().toString());
} catch (e) {
print('Error getting male student count: $e');
}
}
List<charts.Series<SymptomData, String>> _createSampleData() {
final data = [
SymptomData('Dyslexia', 90, Colors.pink),
SymptomData('DCD', 3, Colors.purple),
SymptomData('ADHD', 5, Colors.green),
SymptomData('ASD', 2, Colors.blue),
];
return [
charts.Series<SymptomData, String>(
id: 'Symptoms',
domainFn: (SymptomData symptoms, _) => symptoms.symptom,
measureFn: (SymptomData symptoms, _) => symptoms.percentage,
colorFn: (SymptomData symptoms, _) => symptoms.color,
data: data,
labelAccessorFn: (SymptomData row, _) => '${row.percentage}%',
)
];
}
}
class SymptomData {
final String symptom;
final int percentage;
final charts.Color color;
SymptomData(this.symptom, this.percentage, Color color)
: this.color = charts.Color(
r: color.red,
g: color.green,
b: color.blue,
a: color.alpha,
);
}
...@@ -25,7 +25,7 @@ class _LoginPage extends State<LoginPage> { ...@@ -25,7 +25,7 @@ class _LoginPage extends State<LoginPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
backgroundColor: Colors.transparent, backgroundColor: Colors.white,
elevation: 0, elevation: 0,
leading: IconButton( leading: IconButton(
icon: const Icon( icon: const Icon(
...@@ -135,14 +135,15 @@ class _LoginPage extends State<LoginPage> { ...@@ -135,14 +135,15 @@ class _LoginPage extends State<LoginPage> {
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(10.0),
color: Colors.green, color: Colors.blueAccent,
), ),
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(15.0),
child: Text( child: Text(
'Login', 'Login',
style: TextStyle(color: Colors.black), style:
TextStyle(color: Colors.white, fontSize: 16),
), ),
), ),
), ),
...@@ -193,8 +194,8 @@ class _LoginPage extends State<LoginPage> { ...@@ -193,8 +194,8 @@ class _LoginPage extends State<LoginPage> {
context: context, context: context,
dialogType: DialogType.info, dialogType: DialogType.info,
animType: AnimType.rightSlide, animType: AnimType.rightSlide,
title: ' login Perent', title: ' login Parent',
desc: ' Go to your home page', desc: ' Go to your parent home page',
btnCancelOnPress: () {}, btnCancelOnPress: () {},
btnOkOnPress: () { btnOkOnPress: () {
Navigator.pushReplacement( Navigator.pushReplacement(
......
...@@ -61,14 +61,14 @@ class _MyHomePageState extends State<MyHomePage> { ...@@ -61,14 +61,14 @@ class _MyHomePageState extends State<MyHomePage> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
Timer.periodic(Duration(milliseconds: 500), (timer) { Timer.periodic(Duration(milliseconds: 700), (timer) {
setState(() { setState(() {
// Toggle between zoom in and zoom out // Toggle between zoom in and zoom out
scaleFactor = scaleFactor == 1.0 ? 1.05 : 1.0; scaleFactor = scaleFactor == 1.0 ? 1.05 : 1.0;
}); });
}); });
Future.delayed(Duration(seconds: 3), () { Future.delayed(Duration(seconds: 2), () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mobile_application_kids/sign_in_up.dart';
import 'ParentLogin.dart'; import 'ParentLogin.dart';
import 'login.dart'; import 'login.dart';
...@@ -20,7 +21,11 @@ class ParentTeacherPage extends StatelessWidget { ...@@ -20,7 +21,11 @@ class ParentTeacherPage extends StatelessWidget {
color: const Color.fromARGB(255, 0, 0, 0), color: const Color.fromARGB(255, 0, 0, 0),
), ),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (context) => SignInUpPage(backgroundColor: Colors.white,)),
(Route<dynamic> route) => false,
);
}, },
), ),
), ),
...@@ -67,12 +72,12 @@ class ParentTeacherPage extends StatelessWidget { ...@@ -67,12 +72,12 @@ class ParentTeacherPage extends StatelessWidget {
child: Container( child: Container(
width: 200, width: 200,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(8.0),
color: Color.fromARGB(220, 164, 68, 215), color: Colors.blueAccent,
), ),
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(12.0),
child: Text( child: Text(
'Parent', 'Parent',
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
...@@ -100,12 +105,12 @@ class ParentTeacherPage extends StatelessWidget { ...@@ -100,12 +105,12 @@ class ParentTeacherPage extends StatelessWidget {
child: Container( child: Container(
width: 200, width: 200,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(8.0),
color: Color.fromARGB(220, 164, 68, 215), color: Colors.blueAccent,
), ),
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(12.0),
child: Text( child: Text(
'Teacher', 'Teacher',
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
......
...@@ -16,15 +16,6 @@ class ParentTeacherSignUpPage extends StatelessWidget { ...@@ -16,15 +16,6 @@ class ParentTeacherSignUpPage extends StatelessWidget {
appBar: AppBar( appBar: AppBar(
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
elevation: 0, elevation: 0,
leading: IconButton(
icon: Icon(
Icons.arrow_back,
color: const Color.fromARGB(255, 0, 0, 0),
),
onPressed: () {
Navigator.pop(context);
},
),
), ),
body: Container( body: Container(
color: backgroundColor, color: backgroundColor,
...@@ -67,12 +58,12 @@ class ParentTeacherSignUpPage extends StatelessWidget { ...@@ -67,12 +58,12 @@ class ParentTeacherSignUpPage extends StatelessWidget {
child: Container( child: Container(
width: 200, width: 200,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(8.0),
color: Color.fromARGB(220, 164, 68, 215), color: Colors.blueAccent,
), ),
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(12.0),
child: Text( child: Text(
'Parent', 'Parent',
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
...@@ -98,12 +89,12 @@ class ParentTeacherSignUpPage extends StatelessWidget { ...@@ -98,12 +89,12 @@ class ParentTeacherSignUpPage extends StatelessWidget {
child: Container( child: Container(
width: 200, width: 200,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(8.0),
color: Color.fromARGB(220, 164, 68, 215), color: Colors.blueAccent,
), ),
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(12.0),
child: Text( child: Text(
'Teacher', 'Teacher',
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
......
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mobile_application_kids/addclassroom.dart'; import 'package:mobile_application_kids/ChildrenProfile_parent.dart';
import 'package:mobile_application_kids/childrenProfile.dart';
import 'package:mobile_application_kids/classroomview.dart'; import 'package:mobile_application_kids/classroomview.dart';
import 'package:mobile_application_kids/addclassroom.dart';
import 'package:mobile_application_kids/games.dart'; import 'package:mobile_application_kids/games.dart';
import 'package:mobile_application_kids/parentProfile.dart';
import 'package:mobile_application_kids/teacherchat.dart'; import 'package:mobile_application_kids/teacherchat.dart';
import 'ChatScreen.dart'; import 'ChatScreen.dart';
import 'TeacherProfile.dart'; import 'TeacherProfile.dart';
import 'childrenProfile.dart';
class ParentHomePage extends StatelessWidget { class ParentHomePage extends StatelessWidget {
late User? user; late User? user;
late final Stream<QuerySnapshot> _usersStream; late final Stream<QuerySnapshot> _usersStream;
late String phoneNo; late String phoneNo;
late String role; late String role;
ParentHomePage(param0, role) { ParentHomePage(param0, role) {
this.role = role; this.role = role;
this.phoneNo = param0; this.phoneNo = param0;
...@@ -30,6 +31,7 @@ class ParentHomePage extends StatelessWidget { ...@@ -30,6 +31,7 @@ class ParentHomePage extends StatelessWidget {
.snapshots(); .snapshots();
} }
// Define a TextStyle with the Poppins font
final TextStyle poppinsTextStyle = TextStyle( final TextStyle poppinsTextStyle = TextStyle(
fontFamily: 'Poppins', fontFamily: 'Poppins',
); );
...@@ -38,59 +40,79 @@ class ParentHomePage extends StatelessWidget { ...@@ -38,59 +40,79 @@ class ParentHomePage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return WillPopScope( return WillPopScope(
onWillPop: () async { onWillPop: () async {
// Disable the back button press
return false; return false;
}, },
child: Scaffold( child: Scaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: false,
centerTitle: false,
title: Container(
width: 230,
child: Image.asset(
'lib/assets/i2.png',
fit: BoxFit.fitHeight,
alignment: Alignment.topLeft,
),
),
actions: [ actions: [
IconButton( IconButton(
icon: Icon(Icons.notifications), icon: Icon(Icons.notifications),
onPressed: () {}, onPressed: () {
// Handle notification icon press
},
), ),
], ],
), ),
body: Padding( body: Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(10.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox(height: 20), SizedBox(height: 12),
Text( Text(
'Explore, learn, and play in our magical world of wonder!', 'Explore, learn, and play in our magical world of wonder!',
style: poppinsTextStyle.copyWith( style: poppinsTextStyle.copyWith(
// fontWeight: FontWeight.bold,
fontSize: 13, fontSize: 13,
), ),
), ),
SizedBox(height: 10),
Expanded(
child: Image.asset(
'lib/assets/teacherhome.png',
fit: BoxFit.contain,
),
),
SizedBox(height: 20), SizedBox(height: 20),
Row( Expanded(
mainAxisAlignment: MainAxisAlignment.center, child: ClipRRect(
children: [ borderRadius: BorderRadius.circular(10),
TextButton( child: Image.asset(
onPressed: () { 'lib/assets/teacherhome.png',
Navigator.push( fit: BoxFit.fitHeight,
context,
MaterialPageRoute(builder: (context) => AddClassroomPage()),
);
},
child: Row(
children: [],
),
), ),
], ),
), ),
// SizedBox(height: 20),
// Row(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// // // TextButton(
// // // onPressed: () {
// // // // Navigate to the AddClassroomPage
// // // Navigator.push(
// // // context,
// // // MaterialPageRoute(
// // // builder: (context) => AddClassroomPage()),
// // // );
// // // },
// // // child: Row(
// // // children: [],
// // // ),
// // ),
// ],
// ),
SizedBox(height: 10),
Divider(), Divider(),
SizedBox(height: 10), SizedBox(height: 10),
Text( Text(
'All Kids', 'All Kids',
style: poppinsTextStyle.copyWith( style: poppinsTextStyle.copyWith(
fontSize: 16, fontSize: 18,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
...@@ -99,6 +121,7 @@ class ParentHomePage extends StatelessWidget { ...@@ -99,6 +121,7 @@ class ParentHomePage extends StatelessWidget {
child: StreamBuilder<QuerySnapshot>( child: StreamBuilder<QuerySnapshot>(
stream: _usersStream, stream: _usersStream,
builder: (context, snapshot) { builder: (context, snapshot) {
print("--------------------------------------");
if (snapshot.connectionState == ConnectionState.waiting) { if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator(); return CircularProgressIndicator();
} }
...@@ -106,6 +129,7 @@ class ParentHomePage extends StatelessWidget { ...@@ -106,6 +129,7 @@ class ParentHomePage extends StatelessWidget {
if (snapshot.hasError) { if (snapshot.hasError) {
return Text('Error: ${snapshot.error}'); return Text('Error: ${snapshot.error}');
} }
var itemcount = snapshot.data!.docs.length;
return ListView.builder( return ListView.builder(
itemCount: snapshot.data!.docs.length, itemCount: snapshot.data!.docs.length,
...@@ -113,13 +137,16 @@ class ParentHomePage extends StatelessWidget { ...@@ -113,13 +137,16 @@ class ParentHomePage extends StatelessWidget {
var document = snapshot.data!.docs[index]; var document = snapshot.data!.docs[index];
var className = document['className']; var className = document['className'];
var name = document['Firstname']; var name = document['Firstname'];
print(document);
return Padding( return Padding(
padding: const EdgeInsets.only(bottom: 8.0), padding: const EdgeInsets.only(
bottom: 8.0), // Adjust the spacing as needed
child: ListTile( child: ListTile(
leading: CircleAvatar( leading: CircleAvatar(
radius: 27.0, radius: 27.0,
backgroundImage: AssetImage('lib/assets/classlogo.png'), backgroundImage:
AssetImage('lib/assets/classlogo.png'),
), ),
title: Column( title: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
...@@ -145,20 +172,21 @@ class ParentHomePage extends StatelessWidget { ...@@ -145,20 +172,21 @@ class ParentHomePage extends StatelessWidget {
], ],
), ),
trailing: Container( trailing: Container(
height: 35.0, height: 40.0,
width: 80.0, width: 100.0,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color.fromARGB(203, 164, 88, 177), color: Colors.blueAccent,
borderRadius: BorderRadius.circular(4.0), borderRadius: BorderRadius.circular(8.0),
), ),
child: TextButton( child: TextButton(
onPressed: () { onPressed: () {
print(document);
// Handle view class button press
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => ChildrenProfilePage( builder: (context) =>
document, pChildrenProfilePage(document, "P"),
),
), ),
); );
}, },
...@@ -191,7 +219,7 @@ class ParentHomePage extends StatelessWidget { ...@@ -191,7 +219,7 @@ class ParentHomePage extends StatelessWidget {
label: 'Chat', label: 'Chat',
), ),
BottomNavigationBarItem( BottomNavigationBarItem(
icon: Icon(Icons.videogame_asset), icon: Icon(Icons.sports_baseball),
label: 'Games', label: 'Games',
), ),
BottomNavigationBarItem( BottomNavigationBarItem(
...@@ -199,44 +227,51 @@ class ParentHomePage extends StatelessWidget { ...@@ -199,44 +227,51 @@ class ParentHomePage extends StatelessWidget {
label: 'Profile', label: 'Profile',
), ),
], ],
selectedItemColor: Color(0xFF7A1FA0), selectedItemColor: Colors.blueAccent,
unselectedItemColor: Color(0xFFA9ABAD), unselectedItemColor: Colors.grey,
selectedLabelStyle: TextStyle(color: Color(0xFF7A1FA0)), currentIndex: 0,
unselectedLabelStyle: TextStyle(color: Color.fromARGB(0, 197, 16, 16)),
currentIndex: 0,
onTap: (index) { onTap: (index) {
// Handle bottom navigation item tap
switch (index) { switch (index) {
case 0: case 0:
break; // Navigate to Home
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => ParentHomePage()),
// );
// break;
case 1: case 1:
// Navigate to Chat
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => ChatScreen()), MaterialPageRoute(builder: (context) => ChatScreen()),
); );
break; break;
case 2: case 2:
// Handle Game // Navigate to Games
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(builder: (context) => GamesPage()),
builder: (context) => GamesPage(
),
),
); );
break; break;
case 3: case 3:
// Navigate to Profile
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => TeacherProfilePage( builder: (context) => ParentProfilePage(
uid: user?.uid, uid: user?.uid,
), phoneNo: phoneNo,
role: role,
), ),
); ),
);
break; break;
} }
}, },
), ),
), ),
); );
} }
......
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:mobile_application_kids/ChatScreen.dart';
import 'package:mobile_application_kids/p_or_t.dart';
import 'package:mobile_application_kids/parenthome.dart';
class ParentProfilePage extends StatefulWidget {
final String? uid;
final String phoneNo;
final String role;
ParentProfilePage({required this.uid, required this.phoneNo, required this.role, Key? key});
@override
_ParentProfilePageState createState() => _ParentProfilePageState(uid!, phoneNo, role);
}
class _ParentProfilePageState extends State<ParentProfilePage> {
late User? user;
late String fullName = "";
late String email = "";
late String phoneNo = "";
final FirebaseAuth _auth = FirebaseAuth.instance;
late String uid;
late String role;
_ParentProfilePageState(this.uid, this.phoneNo, this.role);
@override
void initState() {
super.initState();
user = FirebaseAuth.instance.currentUser;
getUserData();
}
Future<void> getUserData() async {
try {
DocumentSnapshot documentSnapshot = await FirebaseFirestore.instance
.collection('users')
.doc(uid)
.get();
if (documentSnapshot.exists) {
Map<String, dynamic> targetDoc = documentSnapshot.data() as Map<String, dynamic>;
setState(() {
fullName = targetDoc['fullName'];
email = targetDoc['email'];
phoneNo = targetDoc['phoneNo'];
});
print("Full Name: $fullName, Email: $email, Phone Number: $phoneNo");
} else {
print("Document does not exist");
}
} catch (error) {
print("Error getting document: $error");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text('Parent Profile',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 20),
Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('lib/assets/parentprof.PNG'),
fit: BoxFit.fitHeight,
),
),
height: 300, // Adjust height as needed
),
Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 10),
ListTile(
leading: Icon(Icons.person),
title: Text(
'Full Name: $fullName',
style: TextStyle(
fontSize: 18,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
),
),
),
ListTile(
leading: Icon(Icons.email),
title: Text(
'Email: $email',
style: TextStyle(
fontSize: 18,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
),
),
),
ListTile(
leading: Icon(Icons.phone),
title: Text(
'Phone Number: $phoneNo',
style: TextStyle(
fontSize: 18,
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
),
),
),
],
),
),
SizedBox(height: 20),
Center(
child: ElevatedButton(
onPressed: () => _signOut(context),
style: ElevatedButton.styleFrom(
primary: Colors.blueAccent,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
),
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Text(
'Sign Out',
style: TextStyle(color: const Color.fromARGB(255, 255, 255, 255)),
),
),
),
),
],
),
),
bottomNavigationBar: BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.chat),
label: 'Chat',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
selectedItemColor: Colors.blue,
currentIndex: 2,
onTap: (index) {
if (index == 0) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ParentHomePage(phoneNo, role)),
);
}
if (index == 1) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatScreen()),
);
}
},
),
);
}
Future<void> _signOut(BuildContext context) async {
try {
await _auth.signOut();
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (BuildContext context) => ParentTeacherPage(backgroundColor: Color.fromARGB(255, 255, 255, 255))),
(route) => false,
);
} catch (e) {
print('Error signing out: $e');
}
}
}
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:jema_app/teacherchat.dart'; import 'package:mobile_application_kids/teacherchat.dart';
import 'package:jema_app/classroomview.dart'; import 'package:mobile_application_kids/classroomview.dart';
import 'package:jema_app/addclassroom.dart'; import 'package:mobile_application_kids/addclassroom.dart';
import 'package:jema_app/teacherhome.dart'; import 'package:mobile_application_kids/teacherhome.dart';
import 'package:pie_chart/pie_chart.dart'; import 'package:pie_chart/pie_chart.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
......
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:jema_app/teacherchat.dart'; import 'package:mobile_application_kids/teacherchat.dart';
import 'package:jema_app/classroomview.dart'; import 'package:mobile_application_kids/classroomview.dart';
import 'package:jema_app/addclassroom.dart'; import 'package:mobile_application_kids/addclassroom.dart';
import 'package:jema_app/teacherhome.dart'; import 'package:mobile_application_kids/teacherhome.dart';
import 'package:pie_chart/pie_chart.dart'; import 'package:pie_chart/pie_chart.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:charts_flutter/flutter.dart' as charts; import 'package:charts_flutter/flutter.dart' as charts;
......
...@@ -49,12 +49,12 @@ class SignInUpPage extends StatelessWidget { ...@@ -49,12 +49,12 @@ class SignInUpPage extends StatelessWidget {
child: Container( child: Container(
width: 200, width: 200,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(8.0),
color: Color.fromARGB(255, 96, 188, 99), color: Color.fromARGB(255, 96, 188, 99),
), ),
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(12.0),
child: Text( child: Text(
'Sign Up', 'Sign Up',
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
...@@ -83,12 +83,12 @@ class SignInUpPage extends StatelessWidget { ...@@ -83,12 +83,12 @@ class SignInUpPage extends StatelessWidget {
child: Container( child: Container(
width: 200, width: 200,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0), borderRadius: BorderRadius.circular(8.0),
color: const Color.fromARGB(255, 213, 80, 236), color: Colors.blueAccent,
), ),
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(12.0),
child: Text( child: Text(
'Sign In', 'Sign In',
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
......
...@@ -37,15 +37,16 @@ class TeacherHomePage extends StatelessWidget { ...@@ -37,15 +37,16 @@ class TeacherHomePage extends StatelessWidget {
}, },
child: Scaffold( child: Scaffold(
appBar: AppBar( appBar: AppBar(
// leading: Padding( automaticallyImplyLeading: false,
// padding: const EdgeInsets.only(left: 20), centerTitle: false,
// child: SizedBox( title: Container(
// child: Image.asset( width: 230,
// 'lib/assets/logo.png', child: Image.asset(
// fit: BoxFit.contain, 'lib/assets/i2.png',
// ), fit: BoxFit.fitHeight,
// ), alignment: Alignment.topLeft,
// ), ),
),
actions: [ actions: [
IconButton( IconButton(
icon: Icon(Icons.notifications), icon: Icon(Icons.notifications),
...@@ -56,11 +57,11 @@ class TeacherHomePage extends StatelessWidget { ...@@ -56,11 +57,11 @@ class TeacherHomePage extends StatelessWidget {
], ],
), ),
body: Padding( body: Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(12.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox(height: 20), SizedBox(height: 10),
Text( Text(
'Explore, learn, and play in our magical world of wonder!', 'Explore, learn, and play in our magical world of wonder!',
style: poppinsTextStyle.copyWith( style: poppinsTextStyle.copyWith(
...@@ -68,11 +69,14 @@ class TeacherHomePage extends StatelessWidget { ...@@ -68,11 +69,14 @@ class TeacherHomePage extends StatelessWidget {
fontSize: 13, fontSize: 13,
), ),
), ),
SizedBox(height: 10), SizedBox(height: 12),
Expanded( Expanded(
child: Image.asset( child: ClipRRect(
'lib/assets/teacherhome.png', borderRadius: BorderRadius.circular(10),
fit: BoxFit.contain, child: Image.asset(
'lib/assets/teacherhome.png',
fit: BoxFit.fitHeight,
),
), ),
), ),
Row( Row(
...@@ -89,6 +93,7 @@ class TeacherHomePage extends StatelessWidget { ...@@ -89,6 +93,7 @@ class TeacherHomePage extends StatelessWidget {
}, },
child: Row( child: Row(
children: [ children: [
SizedBox(height: 12),
Text( Text(
'Create New Class Room Here', 'Create New Class Room Here',
style: poppinsTextStyle.copyWith( style: poppinsTextStyle.copyWith(
...@@ -96,11 +101,12 @@ class TeacherHomePage extends StatelessWidget { ...@@ -96,11 +101,12 @@ class TeacherHomePage extends StatelessWidget {
fontSize: 16, fontSize: 16,
), ),
), ),
SizedBox(height: 12),
Container( Container(
margin: EdgeInsets.only(left: 8.0), margin: EdgeInsets.only(left: 23.0),
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color.fromARGB(203, 164, 88, 177), color: Colors.blueAccent,
borderRadius: BorderRadius.circular(8.0), borderRadius: BorderRadius.circular(8.0),
), ),
child: Icon( child: Icon(
...@@ -114,11 +120,11 @@ class TeacherHomePage extends StatelessWidget { ...@@ -114,11 +120,11 @@ class TeacherHomePage extends StatelessWidget {
], ],
), ),
Divider(), Divider(),
SizedBox(height: 10), SizedBox(height: 8),
Text( Text(
'Class Rooms', 'Class Rooms',
style: poppinsTextStyle.copyWith( style: poppinsTextStyle.copyWith(
fontSize: 16, fontSize: 18,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
...@@ -169,18 +175,18 @@ class TeacherHomePage extends StatelessWidget { ...@@ -169,18 +175,18 @@ class TeacherHomePage extends StatelessWidget {
Text( Text(
'Class $index', 'Class $index',
style: poppinsTextStyle.copyWith( style: poppinsTextStyle.copyWith(
fontSize: 12.0), fontSize: 14.0),
), ),
], ],
), ),
], ],
), ),
trailing: Container( trailing: Container(
height: 35.0, height: 40.0,
width: 80.0, width: 100.0,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color.fromARGB(203, 164, 88, 177), color: Colors.blueAccent,
borderRadius: BorderRadius.circular(4.0), borderRadius: BorderRadius.circular(8.0),
), ),
child: TextButton( child: TextButton(
onPressed: () { onPressed: () {
......
...@@ -648,6 +648,14 @@ packages: ...@@ -648,6 +648,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.2" version: "2.3.2"
simple_gesture_detector:
dependency: transitive
description:
name: simple_gesture_detector
sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3
url: "https://pub.dev"
source: hosted
version: "0.2.1"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
...@@ -717,6 +725,14 @@ packages: ...@@ -717,6 +725,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.0+1" version: "3.1.0+1"
table_calendar:
dependency: "direct main"
description:
name: table_calendar
sha256: "7f1270313c0cdb245b583ed8518982c01d4a7e95869b3c30abcbae3b642c45d0"
url: "https://pub.dev"
source: hosted
version: "3.0.8"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
......
name: jema_app name: mobile_application_kids
description: A new Flutter project. description: A new Flutter project.
# The following line prevents the package from being accidentally published to # The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages. # pub.dev using `flutter pub publish`. This is preferred for private packages.
...@@ -47,6 +47,7 @@ dependencies: ...@@ -47,6 +47,7 @@ dependencies:
url_launcher: ^6.1.14 url_launcher: ^6.1.14
cached_network_image: ^3.3.1 cached_network_image: ^3.3.1
charts_flutter: ^0.12.0 charts_flutter: ^0.12.0
table_calendar: ^3.0.8
dev_dependencies: dev_dependencies:
...@@ -96,7 +97,9 @@ flutter: ...@@ -96,7 +97,9 @@ flutter:
- lib/assets/ac4.png - lib/assets/ac4.png
- lib/assets/ac5.png - lib/assets/ac5.png
- lib/assets/banner.png - lib/assets/banner.png
- lib/assets/ac6.png
- lib/assets/ac7.png
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment