Commit b4eb8f7b authored by Uditha Prabhasha 's avatar Uditha Prabhasha

final update

parent 985775c7
...@@ -43,6 +43,12 @@ ...@@ -43,6 +43,12 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "3.0" "languageVersion": "3.0"
}, },
{
"name": "carousel_slider",
"rootUri": "file:///Users/avishkanew/.pub-cache/hosted/pub.dev/carousel_slider-4.2.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{ {
"name": "characters", "name": "characters",
"rootUri": "file:///Users/avishkanew/.pub-cache/hosted/pub.dev/characters-1.3.0", "rootUri": "file:///Users/avishkanew/.pub-cache/hosted/pub.dev/characters-1.3.0",
...@@ -686,7 +692,7 @@ ...@@ -686,7 +692,7 @@
"languageVersion": "3.0" "languageVersion": "3.0"
} }
], ],
"generated": "2024-03-18T12:13:20.503381Z", "generated": "2024-03-18T20:49:16.239934Z",
"generator": "pub", "generator": "pub",
"generatorVersion": "3.0.1" "generatorVersion": "3.0.1"
} }
...@@ -42,6 +42,10 @@ cached_network_image_web ...@@ -42,6 +42,10 @@ cached_network_image_web
3.0 3.0
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/cached_network_image_web-1.1.1/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/cached_network_image_web-1.1.1/
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/cached_network_image_web-1.1.1/lib/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/cached_network_image_web-1.1.1/lib/
carousel_slider
2.12
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/carousel_slider-4.2.1/
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/carousel_slider-4.2.1/lib/
characters characters
2.12 2.12
file:///Users/avishkanew/.pub-cache/hosted/pub.dev/characters-1.3.0/ file:///Users/avishkanew/.pub-cache/hosted/pub.dev/characters-1.3.0/
......
{"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"} {"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-19 02:19:16.327872","version":"3.10.1"}
\ No newline at end of file \ No newline at end of file
// import 'package:flutter/material.dart';
// import 'package:cloud_firestore/cloud_firestore.dart';
// import 'package:cached_network_image/cached_network_image.dart';
// import 'package:video_player/video_player.dart';
// class UserActivitiesScreen extends StatelessWidget {
// final String userId;
// UserActivitiesScreen({required this.userId});
// @override
// Widget build(BuildContext context) {
// return Scaffold(
// appBar: AppBar(
// title: Text('User Activities'),
// ),
// body: StreamBuilder<QuerySnapshot>(
// stream: FirebaseFirestore.instance
// .collection('activities')
// .where('user', isEqualTo: userId)
// .snapshots(),
// builder: (context, snapshot) {
// if (snapshot.connectionState == ConnectionState.waiting) {
// return CircularProgressIndicator(); // Loading indicator
// }
// if (snapshot.hasError) {
// return Text('Error: ${snapshot.error}'); // Error handling
// }
// if (snapshot.data == null || snapshot.data!.docs.isEmpty) {
// return Center(
// child: Text('No activities found for this user.'),
// ); // No activities found
// }
// return ListView(
// children: snapshot.data!.docs.map((document) {
// final videoUrl = document['videoUrl'];
// final imageUrl = document['imageUrl'];
// if (videoUrl != null) {
// return _buildVideoItem(videoUrl);
// } else if (imageUrl != null) {
// return _buildImageItem(imageUrl);
// } else {
// return SizedBox(); // Return an empty widget if neither video nor image URL is available
// }
// }).toList(),
// );
// },
// ),
// );
// }
// Widget _buildVideoItem(String videoUrl) {
// return ListTile(
// title: Text('Activity Video'),
// leading: FutureBuilder(
// future: VideoPlayerController.network(videoUrl).initialize(),
// builder: (context, snapshot) {
// if (snapshot.connectionState == ConnectionState.waiting) {
// return CircularProgressIndicator(); // Placeholder while video loads
// }
// if (snapshot.hasError) {
// return Text('Error: ${snapshot.error}');
// }
// if (snapshot.connectionState == ConnectionState.done) {
// try {
// final controller = VideoPlayerController.network(videoUrl);
// return AspectRatio(
// aspectRatio: controller.value.aspectRatio,
// child: VideoPlayer(controller),
// );
// } catch (e) {
// return Text('Error playing video: $e');
// }
// } else {
// return SizedBox(); // Return empty widget if still loading
// }
// },
// ),
// onTap: () {
// // Handle tap, e.g., navigate to a detail screen
// },
// );
// }
// Widget _buildImageItem(String imageUrl) {
// return ListTile(
// title: Text('Activity Image'),
// leading: CachedNetworkImage(
// imageUrl: imageUrl,
// placeholder: (context, url) =>
// CircularProgressIndicator(), // Placeholder while image loads
// errorWidget: (context, url, error) => Icon(Icons.error),
// ),
// onTap: () {
// // Handle tap, e.g., navigate to a detail screen
// },
// );
// }
// }
\ No newline at end of file
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:video_player/video_player.dart';
class UserActivitiesScreen extends StatelessWidget { class UserActivitiesScreen extends StatelessWidget {
final String userId; final String userId;
...@@ -12,90 +11,154 @@ class UserActivitiesScreen extends StatelessWidget { ...@@ -12,90 +11,154 @@ class UserActivitiesScreen extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('User Activities'), title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text(
'Activities',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
), ),
body: StreamBuilder<QuerySnapshot>( body: Padding(
stream: FirebaseFirestore.instance padding: const EdgeInsets.symmetric(horizontal: 16.0),
.collection('activities') child: StreamBuilder<QuerySnapshot>(
.where('user', isEqualTo: userId) stream: FirebaseFirestore.instance
.snapshots(), .collection('activities')
builder: (context, snapshot) { .where('user', isEqualTo: userId)
if (snapshot.connectionState == ConnectionState.waiting) { .snapshots(),
return CircularProgressIndicator(); // Loading indicator builder: (context, snapshot) {
} if (snapshot.connectionState == ConnectionState.waiting) {
if (snapshot.hasError) { return Center(
return Text('Error: ${snapshot.error}'); // Error handling child:
} CircularProgressIndicator()); // Loading indicator
if (snapshot.data == null || snapshot.data!.docs.isEmpty) { }
return Center( if (snapshot.hasError) {
child: Text('No activities found for this user.'), return Text('Error: ${snapshot.error}'); // Error handling
); // No activities found }
} if (snapshot.data == null || snapshot.data!.docs.isEmpty) {
return Center(
child: Text('No activities found for this user.'),
); // No activities found
}
return ListView( final imageDocs = snapshot.data!.docs
children: snapshot.data!.docs.map((document) { .where((doc) => doc['imageUrl'] != null)
final videoUrl = document['videoUrl']; .toList();
final imageUrl = document['imageUrl'];
if (videoUrl != null) { return ImageWall(
return _buildVideoItem(videoUrl); imageDocs: imageDocs,
} else if (imageUrl != null) { );
return _buildImageItem(imageUrl); },
} else { ),
return SizedBox(); // Return an empty widget if neither video nor image URL is available
}
}).toList(),
);
},
), ),
); );
} }
}
Widget _buildVideoItem(String videoUrl) { class ImageWall extends StatelessWidget {
return ListTile( final List<DocumentSnapshot> imageDocs;
title: Text('Activity Video'),
leading: FutureBuilder( ImageWall({required this.imageDocs});
future: VideoPlayerController.network(videoUrl).initialize(),
builder: (context, snapshot) { @override
if (snapshot.connectionState == ConnectionState.waiting) { Widget build(BuildContext context) {
return CircularProgressIndicator(); // Placeholder while video loads // Sort the imageDocs based on timestamp in descending order
} imageDocs.sort((a, b) => b['timestamp'].compareTo(a['timestamp']));
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}'); return ListView.separated(
} itemCount: imageDocs.length,
if (snapshot.connectionState == ConnectionState.done) { itemBuilder: (context, index) {
try { final imageUrl = imageDocs[index]['imageUrl'];
final controller = VideoPlayerController.network(videoUrl); final timestamp = imageDocs[index]['timestamp'];
return AspectRatio( return Padding(
aspectRatio: controller.value.aspectRatio, padding: const EdgeInsets.symmetric(vertical: 8.0),
child: VideoPlayer(controller), child: ImageItem(
); imageUrl: imageUrl,
} catch (e) { timestamp: timestamp,
return Text('Error playing video: $e'); ),
} );
} else {
return SizedBox(); // Return empty widget if still loading
}
},
),
onTap: () {
// Handle tap, e.g., navigate to a detail screen
}, },
separatorBuilder: (context, index) => SizedBox(height: 16.0),
); );
} }
}
Widget _buildImageItem(String imageUrl) { class ImageItem extends StatelessWidget {
return ListTile( final String imageUrl;
title: Text('Activity Image'), final Timestamp timestamp;
leading: CachedNetworkImage( final double imageHeight = 200.0;
imageUrl: imageUrl,
placeholder: (context, url) => ImageItem({required this.imageUrl, required this.timestamp});
CircularProgressIndicator(), // Placeholder while image loads
errorWidget: (context, url, error) => Icon(Icons.error), @override
), Widget build(BuildContext context) {
onTap: () { return Column(
// Handle tap, e.g., navigate to a detail screen crossAxisAlignment: CrossAxisAlignment.stretch,
}, children: [
Container(
height: imageHeight,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16.0), // Rounded corners
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 2,
blurRadius: 5,
offset: Offset(0, 2), // Drop shadow
),
],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(16.0), // Clip rounded corners
child: CachedNetworkImage(
imageUrl: imageUrl,
fit: BoxFit.cover,
placeholder: (context, url) => Center(
child: CircularProgressIndicator(),
),
errorWidget: (context, url, error) => Icon(Icons.error),
),
),
),
Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.7), // Semi-transparent background
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(16.0), // Round only bottom corners
bottomRight: Radius.circular(16.0),
),
),
child: Row(
children: [
Expanded(
child: Text(
'Uploaded: ${timestamp.toDate()}',
style: TextStyle(color: Colors.white),
),
),
IconButton(
icon: Icon(Icons.date_range),
color: Colors.white,
onPressed: () {
},
),
],
),
),
],
); );
} }
} }
\ No newline at end of file
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:cached_network_image/cached_network_image.dart';
class pUserActivitiesScreen extends StatelessWidget {
final String pUser;
pUserActivitiesScreen({required this.pUser});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text(
'Activities',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
),
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance
.collection('activities')
// .where('pUser', isEqualTo: pUser)
.snapshots(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child:
CircularProgressIndicator()); // Loading indicator
}
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}'); // Error handling
}
if (snapshot.data == null || snapshot.data!.docs.isEmpty) {
return Center(
child: Text('No activities found for this user.'),
); // No activities found
}
final imageDocs = snapshot.data!.docs
.where((doc) => doc['imageUrl'] != null)
.toList();
return ImageWall(
imageDocs: imageDocs,
);
},
),
),
);
}
}
class ImageWall extends StatelessWidget {
final List<DocumentSnapshot> imageDocs;
ImageWall({required this.imageDocs});
@override
Widget build(BuildContext context) {
// Sort the imageDocs based on timestamp in descending order
imageDocs.sort((a, b) => b['timestamp'].compareTo(a['timestamp']));
return ListView.separated(
itemCount: imageDocs.length,
itemBuilder: (context, index) {
final imageUrl = imageDocs[index]['imageUrl'];
final timestamp = imageDocs[index]['timestamp'];
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: ImageItem(
imageUrl: imageUrl,
timestamp: timestamp,
),
);
},
separatorBuilder: (context, index) => SizedBox(height: 16.0),
);
}
}
class ImageItem extends StatelessWidget {
final String imageUrl;
final Timestamp timestamp;
final double imageHeight = 200.0;
ImageItem({required this.imageUrl, required this.timestamp});
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Container(
height: imageHeight,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16.0), // Rounded corners
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 2,
blurRadius: 5,
offset: Offset(0, 2), // Drop shadow
),
],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(16.0), // Clip rounded corners
child: CachedNetworkImage(
imageUrl: imageUrl,
fit: BoxFit.cover,
placeholder: (context, url) => Center(
child: CircularProgressIndicator(),
),
errorWidget: (context, url, error) => Icon(Icons.error),
),
),
),
Container(
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.7), // Semi-transparent background
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(16.0), // Round only bottom corners
bottomRight: Radius.circular(16.0),
),
),
child: Row(
children: [
Expanded(
child: Text(
'Uploaded: ${timestamp.toDate()}',
style: TextStyle(color: Colors.white),
),
),
IconButton(
icon: Icon(Icons.date_range),
color: Colors.white,
onPressed: () {
// Implement your comment functionality here
// You can navigate to a comment screen or show a dialog
// to add comments for the current image.
},
),
],
),
),
],
);
}
}
// import 'dart:async';
// import 'package:cloud_firestore/cloud_firestore.dart';
// import 'package:firebase_auth/firebase_auth.dart';
// import 'package:flutter/material.dart';
// import 'package:image_picker/image_picker.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/ReportKids.dart';
// import 'package:mobile_application_kids/TeacherProfile.dart';
// import 'package:mobile_application_kids/teacherhome.dart';
// import 'CheckKids.dart';
// import 'ChildrenActiPhone.dart';
// import 'ChildrenHomePage.dart';
// import 'addstudent.dart';
// class ChildrenActivity extends StatelessWidget {
// late Future<List<DocumentSnapshot>> students = getStudentData();
// final TextEditingController _searchController = TextEditingController();
// late StreamController<String> _searchTermController;
// late User? user;
// ChildrenActivity({super.key}) {
// user = FirebaseAuth.instance.currentUser;
// }
// Future<List<DocumentSnapshot>> getStudentData() async {
// QuerySnapshot querySnapshot =
// await FirebaseFirestore.instance.collection('students').get();
// return querySnapshot.docs;
// }
// @override
// Widget build(BuildContext context) {
// double width = MediaQuery.of(context).size.width;
// return Scaffold(
// appBar: AppBar(
// leading: IconButton(
// icon: Icon(Icons.arrow_back),
// onPressed: () {
// Navigator.pop(context);
// },
// ),
// actions: [
// Text(
// 'Activities ',
// 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: [
// Padding(
// padding: EdgeInsets.fromLTRB(width * 0.1, 20, width * 0.1, 20),
// child: Container(
// width: 293,
// height: 44,
// decoration: ShapeDecoration(
// color: Colors.white,
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(8),
// ),
// shadows: [
// BoxShadow(
// color: Color(0x3F000000),
// blurRadius: 4,
// offset: Offset(0, 1),
// spreadRadius: 0,
// ),
// ],
// ),
// child: TextField(
// controller: _searchController,
// onChanged: (value) {
// _searchTermController.add(value);
// },
// decoration: InputDecoration(
// hintText: 'Search',
// border: InputBorder.none,
// icon: Padding(
// padding: const EdgeInsets.all(8.0),
// child: Icon(Icons.search),
// ),
// suffixIcon: Icon(Icons.mic),
// contentPadding: EdgeInsets.all(8),
// ),
// ),
// ),
// ),
// SizedBox(height: 10),
// GridView.count(
// crossAxisCount: 2,
// childAspectRatio: (1 / 0.6),
// shrinkWrap: true,
// children: [
// GestureDetector(
// onTap: () {
// openCamera(context);
// },
// child: Padding(
// padding: const EdgeInsets.all(10.0),
// child: Container(
// width: 170,
// height: 85,
// clipBehavior: Clip.antiAlias,
// decoration: BoxDecoration(
// image: DecorationImage(
// image: AssetImage(
// 'lib/assets/ac1.png'),
// fit: BoxFit
// .cover,
// )),
// ),
// ),
// ),
// GestureDetector(
// onTap: () {
// openVideoRecorder(context);
// },
// child: Padding(
// padding: const EdgeInsets.all(10.0),
// child: Container(
// width: 170,
// height: 85,
// clipBehavior: Clip.antiAlias,
// decoration: BoxDecoration(
// image: DecorationImage(
// image: AssetImage(
// 'lib/assets/ac2.png'),
// fit: BoxFit
// .cover,
// )),
// ),
// ),
// ),
// GestureDetector(
// onTap: () {
// Navigator.of(context).push(MaterialPageRoute(
// builder: (_) => ChildrenActivity(),
// ));
// },
// child: Padding(
// padding: const EdgeInsets.all(10.0),
// child: Container(
// width: 170,
// height: 85,
// clipBehavior: Clip.antiAlias,
// decoration: BoxDecoration(
// image: DecorationImage(
// image: AssetImage(
// 'lib/assets/ac7.png'),
// fit: BoxFit
// .cover,
// )),
// ),
// ),
// ),
// GestureDetector(
// onTap: () {
// Navigator.of(context).push(MaterialPageRoute(
// builder: (_) => CheckKidsPage(),
// ));
// },
// child: Padding(
// padding: const EdgeInsets.all(10.0),
// child: Container(
// width: 170,
// height: 85,
// clipBehavior: Clip.antiAlias,
// decoration: BoxDecoration(
// image: DecorationImage(
// image: AssetImage(
// 'lib/assets/ac4.png'),
// fit: BoxFit
// .cover,
// )),
// ),
// ),
// ),
// GestureDetector(
// onTap: () {
// // Navigator.of(context).push(MaterialPageRoute(
// // builder: (_) => ReportKidsPage( classroom: ),
// // ));
// },
// child: Padding(
// padding: const EdgeInsets.all(10.0),
// child: Container(
// width: 170,
// height: 85,
// clipBehavior: Clip.antiAlias,
// decoration: BoxDecoration(
// image: DecorationImage(
// image: AssetImage(
// 'lib/assets/ac6.png'),
// fit: BoxFit
// .cover,
// )),
// ),
// ),
// ),
// ]),
// ],
// ),
// ),
// ),
// 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;
// }
// },
// ),
// );
// }
// void openCamera(context) async {
// final picker = ImagePicker();
// final pickedFile = await picker.pickImage(source: ImageSource.camera);
// if (pickedFile != null) {
// String imagePath = pickedFile.path;
// Navigator.push(
// context,
// MaterialPageRoute(
// builder: (context) => ChildrenActiPhone(image: imagePath)),
// );
// // Use the picked file, for example, display it in an Image widget
// // Image.file(File(pickedFile.path))
// print('Image selected: ${pickedFile.path}');
// } else {
// print('No image selected');
// }
// }
// void openVideoRecorder(context) async {
// final picker = ImagePicker();
// final pickedFile = await picker.pickVideo(source: ImageSource.camera);
// if (pickedFile != null) {
// String imagePath = pickedFile.path;
// Navigator.push(
// context,
// MaterialPageRoute(
// builder: (context) => ChildrenVideo(video: imagePath)),
// );
// // Use the picked file, for example, display it in a Video widget
// // Video.file(File(pickedFile.path))
// print('Video selected: ${pickedFile.path}');
// } else {
// print('No video selected');
// }
// }
// }
...@@ -273,11 +273,13 @@ class ChildrenActivity extends StatelessWidget { ...@@ -273,11 +273,13 @@ class ChildrenActivity extends StatelessWidget {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => ChildrenActiPhone(image: imagePath)), builder: (context) => ChildrenActiPhone(
image: imagePath,
// userId: user?.uid, // Pass the user ID to the next screen
),
),
); );
// Use the picked file, for example, display it in an Image widget
// Image.file(File(pickedFile.path))
print('Image selected: ${pickedFile.path}'); print('Image selected: ${pickedFile.path}');
} else { } else {
print('No image selected'); print('No image selected');
...@@ -289,15 +291,17 @@ class ChildrenActivity extends StatelessWidget { ...@@ -289,15 +291,17 @@ class ChildrenActivity extends StatelessWidget {
final pickedFile = await picker.pickVideo(source: ImageSource.camera); final pickedFile = await picker.pickVideo(source: ImageSource.camera);
if (pickedFile != null) { if (pickedFile != null) {
String imagePath = pickedFile.path; String videoPath = pickedFile.path;
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => ChildrenVideo(video: imagePath)), builder: (context) => ChildrenVideo(
video: videoPath,
// userId: user?.uid, // Pass the user ID to the next screen
),
),
); );
// Use the picked file, for example, display it in a Video widget
// Video.file(File(pickedFile.path))
print('Video selected: ${pickedFile.path}'); print('Video selected: ${pickedFile.path}');
} else { } else {
print('No video selected'); print('No video selected');
......
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/ActivitiesView_parent.dart';
import 'package:mobile_application_kids/progressReport.dart'; import 'package:mobile_application_kids/progressReport.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';
...@@ -19,7 +20,7 @@ class pChildrenProfilePage extends StatelessWidget { ...@@ -19,7 +20,7 @@ class pChildrenProfilePage extends StatelessWidget {
int _age = 10; int _age = 10;
String role = ''; String role = '';
late final userDetails; late final userDetails;
pChildrenProfilePage(document, role) { pChildrenProfilePage(document, role, {required String pUser}) {
print(role); print(role);
this.role = role; this.role = role;
this.userDetails = document; this.userDetails = document;
...@@ -477,8 +478,8 @@ class pChildrenProfilePage extends StatelessWidget { ...@@ -477,8 +478,8 @@ class pChildrenProfilePage extends StatelessWidget {
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) =>
UserActivitiesScreen( pUserActivitiesScreen(pUser: user!.uid)
userId: user!.uid)), )
); );
}, },
child: Container( child: Container(
...@@ -738,7 +739,7 @@ class pChildrenProfilePage extends StatelessWidget { ...@@ -738,7 +739,7 @@ class pChildrenProfilePage extends StatelessWidget {
TextSpan( TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'Monthly \npsycholo. report \n ', text: 'Monthly progress report \n',
style: TextStyle( style: TextStyle(
color: color:
Color(0xFF403572), Color(0xFF403572),
...@@ -760,7 +761,7 @@ class pChildrenProfilePage extends StatelessWidget { ...@@ -760,7 +761,7 @@ class pChildrenProfilePage extends StatelessWidget {
child: Opacity( child: Opacity(
opacity: 0.70, opacity: 0.70,
child: Text( child: Text(
'Some short description of this type of report.', "Progress of kid's learning and behavior",
style: TextStyle( style: TextStyle(
color: Color(0xFF8DAEAE), color: Color(0xFF8DAEAE),
fontSize: 9.55, fontSize: 9.55,
...@@ -847,7 +848,7 @@ class pChildrenProfilePage extends StatelessWidget { ...@@ -847,7 +848,7 @@ class pChildrenProfilePage extends StatelessWidget {
TextSpan( TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'Monthly prediction report \n', text: 'Monthly \nPsychology Report \n',
style: TextStyle( style: TextStyle(
color: color:
Color(0xFF479696), Color(0xFF479696),
...@@ -868,7 +869,7 @@ class pChildrenProfilePage extends StatelessWidget { ...@@ -868,7 +869,7 @@ class pChildrenProfilePage extends StatelessWidget {
child: Opacity( child: Opacity(
opacity: 0.70, opacity: 0.70,
child: Text( child: Text(
'Some short description of this type of report.', 'Monthly insights of activity reports',
style: TextStyle( style: TextStyle(
color: Color(0xFF8DAEAE), color: Color(0xFF8DAEAE),
fontSize: 9.55, fontSize: 9.55,
......
...@@ -5,6 +5,8 @@ import 'package:firebase_storage/firebase_storage.dart'; ...@@ -5,6 +5,8 @@ import 'package:firebase_storage/firebase_storage.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 'dart:io'; import 'dart:io';
import 'package:intl/intl.dart';
class AddStudentPage extends StatefulWidget { class AddStudentPage extends StatefulWidget {
const AddStudentPage({required this.classname}); const AddStudentPage({required this.classname});
...@@ -17,6 +19,7 @@ class AddStudentPage extends StatefulWidget { ...@@ -17,6 +19,7 @@ class AddStudentPage extends StatefulWidget {
class _AddStudentState extends State<AddStudentPage> { class _AddStudentState extends State<AddStudentPage> {
final _formkey = GlobalKey<FormState>(); final _formkey = GlobalKey<FormState>();
final _auth = FirebaseAuth.instance; final _auth = FirebaseAuth.instance;
//Bio Part //Bio Part
TextEditingController _firstnameController = TextEditingController(); TextEditingController _firstnameController = TextEditingController();
TextEditingController _lastnameController = TextEditingController(); TextEditingController _lastnameController = TextEditingController();
...@@ -50,6 +53,9 @@ class _AddStudentState extends State<AddStudentPage> { ...@@ -50,6 +53,9 @@ class _AddStudentState extends State<AddStudentPage> {
XFile? _selectedImage; XFile? _selectedImage;
String classname; String classname;
String? _selectedSex;
DateTime? _selectedBirthday;
_AddStudentState(String classname) : this.classname = classname; _AddStudentState(String classname) : this.classname = classname;
@override @override
...@@ -163,6 +169,31 @@ class _AddStudentState extends State<AddStudentPage> { ...@@ -163,6 +169,31 @@ class _AddStudentState extends State<AddStudentPage> {
), ),
), ),
// SizedBox(height: 20),
// GestureDetector(
// onTap: () => _selectDate(context),
// child: Container(
// padding: EdgeInsets.symmetric(horizontal: 10, vertical: 15),
// decoration: BoxDecoration(
// color: Color.fromARGB(107, 196, 196, 196),
// borderRadius: BorderRadius.circular(10.0),
// ),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween, // Aligns children to both ends
// children: [
// Expanded( // Text takes up all available space, pushing the icon to the right
// child: Text(
// _selectedBirthday != null ? DateFormat('yyyy-MM-dd').format(_selectedBirthday!) : 'Select Birthday',
// style: TextStyle(fontSize: 14.0, color: Colors.black54),
// ),
// ),
// Icon(Icons.cake, size: 23.0, color: Color.fromARGB(132, 12, 12, 12)), // Icon on the right
// ],
// ),
// ),
// ),
SizedBox(height: 20), SizedBox(height: 20),
Container( Container(
height: 55.0, height: 55.0,
...@@ -186,25 +217,34 @@ class _AddStudentState extends State<AddStudentPage> { ...@@ -186,25 +217,34 @@ class _AddStudentState extends State<AddStudentPage> {
SizedBox(height: 20), SizedBox(height: 20),
Container( Container(
height: 55.0, height: 55.0,
child: TextField( padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2),
controller: _sexController, decoration: BoxDecoration(
color: Color.fromARGB(107, 196, 196, 196), // Background color
borderRadius: BorderRadius.circular(10.0), // Border radius
),
child: DropdownButtonFormField<String>(
value: _selectedSex, // This should be a variable in your state class initialized to null or the default value
decoration: InputDecoration( decoration: InputDecoration(
hintText: 'Male/Female', border: InputBorder.none,
filled: true, // contentPadding: EdgeInsets.zero,
fillColor: Color.fromARGB(107, 196, 196, 196), suffixIcon: Icon(Icons.people, size: 23.0, color: Color.fromARGB(132, 12, 12, 12)),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.0),
borderSide: BorderSide.none,
),
suffixIcon: Icon(Icons.people,
size: 23.0, color: Color.fromARGB(132, 12, 12, 12)),
hintStyle: TextStyle(fontSize: 14.0), // Add border here
), ),
hint: Text('Gender', style: TextStyle(fontSize: 14.0)), // Placeholder text
onChanged: (String? newValue) {
setState(() {
_selectedSex = newValue; // Update the state with the new value
});
},
items: <String>['Male', 'Female'].map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
), ),
), ),
//Medicine Part //Medicine Part
SizedBox(height: 50), SizedBox(height: 50),
Row( Row(
children: [ children: [
...@@ -586,7 +626,7 @@ class _AddStudentState extends State<AddStudentPage> { ...@@ -586,7 +626,7 @@ class _AddStudentState extends State<AddStudentPage> {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
TextButton( ElevatedButton(
onPressed: () async { onPressed: () async {
if (Image == null) { if (Image == null) {
AwesomeDialog( AwesomeDialog(
...@@ -664,36 +704,38 @@ class _AddStudentState extends State<AddStudentPage> { ...@@ -664,36 +704,38 @@ class _AddStudentState extends State<AddStudentPage> {
} }
}, },
style: style:
TextButton.styleFrom(backgroundColor: Colors.green), ElevatedButton.styleFrom(
child: Text( primary: const Color.fromARGB(255, 48, 206, 53),
'Save', shape: RoundedRectangleBorder(
style: TextStyle( borderRadius: BorderRadius.circular(10.0),
color: Colors.white, ),
fontSize: 14,
fontFamily: 'Poppins',
fontWeight: FontWeight.w600,
height: 1,
), ),
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Text(
'Save',
style: TextStyle(color: const Color.fromARGB(255, 255, 255, 255)),
),
), ),
), ),
TextButton( ElevatedButton(
onPressed: () { onPressed: () {
// Handle signup logic here Navigator.pop(context);
Navigator.pop(context); },
}, style: ElevatedButton.styleFrom(
style: TextButton.styleFrom( primary: const Color.fromARGB(255, 255, 255, 255),
backgroundColor: Colors.grey.shade200), shape: RoundedRectangleBorder(
child: Text( borderRadius: BorderRadius.circular(10.0),
'Cancel', ),
style: TextStyle( ),
color: Colors.black, child: Padding(
fontSize: 14, padding: const EdgeInsets.all(10.0),
fontFamily: 'Poppins', child: Text(
fontWeight: FontWeight.w600, 'Cancel',
height: 1, style: TextStyle(color: Colors.black),
),
), ),
), ),
)
], ],
), ),
], ],
...@@ -766,3 +808,18 @@ class _AddStudentState extends State<AddStudentPage> { ...@@ -766,3 +808,18 @@ class _AddStudentState extends State<AddStudentPage> {
)..show(); )..show();
} }
} }
Future<void> _selectDate(BuildContext context) async {
final DateTime? pickedDate = await showDatePicker(
context: context,
initialDate: DateTime.now(), // Initial date set to current date
firstDate: DateTime(1900), // Earliest allowable date
lastDate: DateTime.now(), // Latest allowable date is today
);
// if (pickedDate != null && pickedDate != DateTime.now()) {
// setState(() {
// // Format the date and update the text field
// _birthdayController.text = DateFormat('yyyy-MM-dd').format(pickedDate);
// });
// }
}
// import 'package:awesome_dialog/awesome_dialog.dart';
// import 'package:cloud_firestore/cloud_firestore.dart';
// import 'package:firebase_auth/firebase_auth.dart';
// import 'package:firebase_storage/firebase_storage.dart';
// import 'package:flutter/material.dart';
// import 'package:image_picker/image_picker.dart';
// import 'dart:io';
// class AddStudentPage extends StatefulWidget {
// final String classname;
// const AddStudentPage({required this.classname, Key? key}) : super(key: key);
// @override
// State<AddStudentPage> createState() => _AddStudentState();
// }
// class _AddStudentState extends State<AddStudentPage> {
// final ImagePicker _imagePicker = ImagePicker();
// XFile? _selectedImage;
// String? _selectedSex;
// // Controllers
// final TextEditingController _firstnameController = TextEditingController();
// final TextEditingController _lastnameController = TextEditingController();
// final TextEditingController _birthdayController = TextEditingController();
// final TextEditingController _doctornameController = TextEditingController();
// final TextEditingController _doctorphoneController = TextEditingController();
// final TextEditingController _allergiesController = TextEditingController();
// final TextEditingController _medicineController = TextEditingController();
// final TextEditingController _parentnameController = TextEditingController();
// final TextEditingController _parentphoneController = TextEditingController();
// final TextEditingController _parentemailController = TextEditingController();
// final TextEditingController _addressLine1Controller = TextEditingController();
// final TextEditingController _addressLine2Controller = TextEditingController();
// final TextEditingController _cityController = TextEditingController();
// final TextEditingController _zipController = TextEditingController();
// final TextEditingController _countryController = TextEditingController();
// final TextEditingController _stateController = TextEditingController();
// bool _specialNeedsYes = false;
// bool _specialNeedsNo = false;
// @override
// Widget build(BuildContext context) {
// return Scaffold(
// appBar: AppBar(
// leading: IconButton(
// icon: Icon(Icons.arrow_back),
// onPressed: () => Navigator.pop(context),
// ),
// title: Text('Add Kid'),
// centerTitle: true,
// ),
// body: SingleChildScrollView(
// child: SafeArea(
// child: Padding(
// padding: const EdgeInsets.all(16.0),
// child: Form(
// child: Column(
// children: [
// _buildImagePicker(),
// _buildSectionTitle('Bio'),
// _buildTextField(_firstnameController, 'First Name', Icons.person),
// _buildTextField(_lastnameController, 'Last Name', Icons.person),
// _buildTextField(_birthdayController, 'Birthday', Icons.cake),
// _buildDropdownButton(),
// _buildSectionTitle('Medicine'),
// _buildTextField(_doctornameController, 'Doctor Name', Icons.person),
// _buildTextField(_doctorphoneController, 'Doctor Phone Number', Icons.phone),
// _buildTextField(_allergiesController, 'Allergies', Icons.coronavirus_sharp),
// _buildTextField(_medicineController, 'Medicine', Icons.medication_outlined),
// _buildSpecialNeedsSection(),
// _buildSectionTitle('Contact'),
// _buildTextField(_parentnameController, 'Parent Name', Icons.person),
// _buildTextField(_parentphoneController, 'Parent Phone Number', Icons.phone),
// _buildTextField(_parentemailController, 'Parent Email', Icons.email),
// _buildSectionTitle('Address'),
// _buildTextField(_addressLine1Controller, 'Address Line 1', Icons.location_on_outlined),
// _buildTextField(_addressLine2Controller, 'Address Line 2', Icons.location_on_outlined),
// _buildTextField(_cityController, 'City', Icons.location_city_sharp),
// _buildTextField(_zipController, 'Zip/Postal Code', Icons.location_searching),
// _buildTextField(_countryController, 'Country', Icons.location_city_rounded),
// _buildTextField(_stateController, 'State/Region', Icons.location_city_sharp),
// _buildActionButtons(),
// ],
// ),
// ),
// ),
// ),
// ),
// );
// }
// Widget _buildImagePicker() {
// return GestureDetector(
// onTap: () async {
// XFile? image = await _imagePicker.pickImage(source: ImageSource.gallery, imageQuality: 50);
// setState(() => _selectedImage = image);
// },
// child: CircleAvatar(
// radius: 50.0,
// backgroundImage: _selectedImage != null ? FileImage(File(_selectedImage!.path)) : AssetImage('assets/classlogo.png') as ImageProvider,
// ),
// );
// }
// Widget _buildTextField(TextEditingController controller, String hintText, IconData icon) {
// return Padding(
// padding: const EdgeInsets.only(top: 20),
// child: TextField(
// controller: controller,
// decoration: InputDecoration(
// hintText: hintText,
// filled: true,
// fillColor: Color.fromARGB(107, 196, 196, 196),
// border: OutlineInputBorder(borderRadius: BorderRadius.circular(10.0), borderSide: BorderSide.none),
// suffixIcon: Icon(icon, size: 23.0, color: Color.fromARGB(132, 12, 12, 12)),
// ),
// ),
// );
// }
// Widget _buildDropdownButton() {
// return Padding(
// padding: const EdgeInsets.only(top: 20),
// child: DropdownButtonFormField<String>(
// value: _selectedSex,
// onChanged: (newValue) => setState(() => _selectedSex = newValue),
// items: <String>['Select', 'Male', 'Female'].map((String value) {
// return DropdownMenuItem<String>(
// value: value,
// child: Text(value),
// );
// }).toList(),
// decoration: InputDecoration(
// filled: true,
// fillColor: Color.fromARGB(107, 196, 196, 196),
// border: OutlineInputBorder(borderRadius: BorderRadius.circular(10.0), borderSide: BorderSide.none),
// suffixIcon: Icon(Icons.people, size: 23.0, color: Color.fromARGB(132, 12, 12, 12)),
// hintText: 'Select Gender',
// ),
// ),
// );
// }
// Widget _buildSpecialNeedsSection() {
// return Padding(
// padding: const EdgeInsets.only(top: 20),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Expanded(child: Text('Special Needs Child', style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold))),
// Text('Yes'),
// Checkbox(value: _specialNeedsYes, onChanged: (bool? value) => setState(() => _specialNeedsYes = value ?? false)),
// Text('No'),
// Checkbox(value: _specialNeedsNo, onChanged: (bool? value) => setState(() => _specialNeedsNo = value ?? false)),
// ],
// ),
// );
// }
// Widget _buildSectionTitle(String title) {
// return Padding(
// padding: const EdgeInsets.only(top: 30, bottom: 10),
// child: Row(
// children: [
// Expanded(
// child: Text(
// title,
// style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold, color: Color(0xFF22215B)),
// ),
// ),
// ],
// ),
// );
// }
// Widget _buildActionButtons() {
// return Padding(
// padding: const EdgeInsets.symmetric(vertical: 30),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// _buildActionButton('Save', Colors.green, _handleSave),
// SizedBox(width: 20),
// _buildActionButton('Cancel', Colors.grey.shade200, () => Navigator.pop(context)),
// ],
// ),
// );
// }
// Widget _buildActionButton(String title, Color color, VoidCallback onPressed) {
// return TextButton(
// onPressed: onPressed,
// style: TextButton.styleFrom(backgroundColor: color, padding: EdgeInsets.symmetric(horizontal: 30)),
// child: Text(
// title,
// style: TextStyle(color: Colors.white, fontSize: 14, fontFamily: 'Poppins', fontWeight: FontWeight.w600),
// ),
// );
// }
// Future<void> _handleSave() async {
// if (_selectedImage == null) {
// _showDialog('Error', 'Please select an image for the student');
// return;
// }
// try {
// // Upload image to Firebase Storage
// String imageName = DateTime.now().millisecondsSinceEpoch.toString();
// Reference storageRef = FirebaseStorage.instance.ref().child('student_images/$imageName');
// UploadTask uploadTask = storageRef.putFile(File(_selectedImage!.path));
// String imageUrl = await (await uploadTask).ref.getDownloadURL();
// // Save student details to Firestore
// FirebaseFirestore.instance.collection('students').add({
// 'Firstname': _firstnameController.text.trim(),
// 'Lastname': _lastnameController.text.trim(),
// 'Sex': _selectedSex,
// 'Birthday': _birthdayController.text.trim(),
// 'Doctorname': _doctornameController.text.trim(),
// 'Doctorphone': _doctorphoneController.text.trim(),
// 'Allergies': _allergiesController.text.trim(),
// 'Medicine': _medicineController.text.trim(),
// 'Parentname': _parentnameController.text.trim(),
// 'Parentphone': _parentphoneController.text.trim(),
// 'Parentemail': _parentemailController.text.trim(),
// 'AddressLine1': _addressLine1Controller.text.trim(),
// 'AddressLine2': _addressLine2Controller.text.trim(),
// 'City': _cityController.text.trim(),
// 'Zip': _zipController.text.trim(),
// 'Country': _countryController.text.trim(),
// 'State': _stateController.text.trim(),
// 'Image': imageUrl,
// 'ClassName': widget.classname,
// 'SpecialNeeds': _specialNeedsYes ? 'Yes' : 'No',
// 'UserId': FirebaseAuth.instance.currentUser?.uid ?? '',
// 'Timestamp': FieldValue.serverTimestamp(),
// });
// _showDialog('Success', 'Student details saved successfully', success: true);
// } catch (e) {
// _showDialog('Error', 'Failed to save student details');
// }
// }
// void _showDialog(String title, String desc, {bool success = false}) {
// AwesomeDialog(
// context: context,
// dialogType: success ? DialogType.success : DialogType.error,
// animType: AnimType.rightSlide,
// title: title,
// desc: desc,
// btnOkOnPress: () {},
// ).show();
// }
// }
...@@ -738,7 +738,7 @@ child: Container( ...@@ -738,7 +738,7 @@ child: Container(
TextSpan( TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'Monthly \npsycholo. report \n ', text: 'Monthly progress report \n',
style: TextStyle( style: TextStyle(
color: color:
Color(0xFF403572), Color(0xFF403572),
...@@ -760,7 +760,7 @@ child: Container( ...@@ -760,7 +760,7 @@ child: Container(
child: Opacity( child: Opacity(
opacity: 0.70, opacity: 0.70,
child: Text( child: Text(
'Some short description of this type of report.', "Progress of kid's learning and behavior.",
style: TextStyle( style: TextStyle(
color: Color(0xFF8DAEAE), color: Color(0xFF8DAEAE),
fontSize: 9.55, fontSize: 9.55,
...@@ -847,7 +847,7 @@ child: Container( ...@@ -847,7 +847,7 @@ child: Container(
TextSpan( TextSpan(
children: [ children: [
TextSpan( TextSpan(
text: 'Monthly prediction report \n', text: 'Monthly \nPsychology Report \n ',
style: TextStyle( style: TextStyle(
color: color:
Color(0xFF479696), Color(0xFF479696),
...@@ -868,7 +868,7 @@ child: Container( ...@@ -868,7 +868,7 @@ child: Container(
child: Opacity( child: Opacity(
opacity: 0.70, opacity: 0.70,
child: Text( child: Text(
'Some short description of this type of report.', 'Monthly insights of activity reports',
style: TextStyle( style: TextStyle(
color: Color(0xFF8DAEAE), color: Color(0xFF8DAEAE),
fontSize: 9.55, fontSize: 9.55,
......
...@@ -125,7 +125,7 @@ class ClassroomViewPage extends StatelessWidget { ...@@ -125,7 +125,7 @@ class ClassroomViewPage extends StatelessWidget {
} }
// Use the result of getStudentCount // Use the result of getStudentCount
return Text( return Text(
'Children Count ' + (snapshot.data ?? '0'), // Default to '0' if data is null 'Kids Count: ' + (snapshot.data ?? '0'), // Default to '0' if data is null
style: TextStyle( style: TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 15, fontSize: 15,
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:mobile_application_kids/ChatScreen.dart';
import 'package:mobile_application_kids/parentHome.dart';
import 'package:mobile_application_kids/parentProfile.dart';
class GamesPage extends StatelessWidget { class GamesPage extends StatelessWidget {
final List<Map<String, String>> gameData = [ final List<Map<String, String>> gameData = [
{'game': 'Game 1', 'description': 'Description for Game 1'}, {'game': 'Game 1', 'description': 'Description for Game 1'},
{'game': 'Game 2', 'description': 'Description for Game 2'}, {'game': 'Game 2', 'description': 'Description for Game 2'},
// add list {'game': 'Game 3', 'description': 'Description for Game 1'},
{'game': 'Game 4', 'description': 'Description for Game 2'},
// add more games as needed
]; ];
final String commonImagePath = 'assets/act_photo.png'; final String commonImagePath = 'lib/assets/act_photo.png';
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Games'), title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text(
'Games',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
), ),
body: Column( body: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
...@@ -37,7 +61,7 @@ class GamesPage extends StatelessWidget { ...@@ -37,7 +61,7 @@ class GamesPage extends StatelessWidget {
child: ListTile( child: ListTile(
contentPadding: EdgeInsets.all(16), contentPadding: EdgeInsets.all(16),
leading: Container( leading: Container(
width: 50, width: 50,
height: 50, height: 50,
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage(commonImagePath), backgroundImage: AssetImage(commonImagePath),
...@@ -69,7 +93,7 @@ class GamesPage extends StatelessWidget { ...@@ -69,7 +93,7 @@ class GamesPage extends StatelessWidget {
label: 'Chat', label: 'Chat',
), ),
BottomNavigationBarItem( BottomNavigationBarItem(
icon: Icon(Icons.games), icon: Icon(Icons.sports_baseball),
label: 'Games', label: 'Games',
), ),
BottomNavigationBarItem( BottomNavigationBarItem(
...@@ -77,37 +101,36 @@ class GamesPage extends StatelessWidget { ...@@ -77,37 +101,36 @@ class GamesPage extends StatelessWidget {
label: 'Profile', label: 'Profile',
), ),
], ],
selectedItemColor: Color(0xFF7A1FA0), selectedItemColor: Colors.blueAccent,
unselectedItemColor: Color(0xFFA9ABAD), unselectedItemColor: Colors.grey,
selectedLabelStyle: TextStyle(color: Color(0xFF7A1FA0)),
unselectedLabelStyle: TextStyle(color: Color.fromARGB(0, 197, 16, 16)),
currentIndex: 2, currentIndex: 2,
onTap: (index) { onTap: (index) {
switch (index) { switch (index) {
case 0: case 0:
// Navigate to Home // Navigate to Home
// Replace the code below with your home navigation logic
// Navigator.push( // Navigator.push(
// // context, // context,
// // MaterialPageRoute(builder: (context) => AddClassroom()), // MaterialPageRoute(builder: (context) => ParentHomePage(phoneNo, role)),
// ); // );
break; break;
case 1: case 1:
// Navigate to Chat // Navigate to Chat
// Navigator.push( Navigator.push(
// // context, context,
// // MaterialPageRoute(builder: (context) => ChatScreen()), MaterialPageRoute(builder: (context) => ChatScreen()),
// ); );
break; break;
case 2: case 2:
// Already on Games Page // Do nothing, we are already on the Games page
break; break;
case 3: case 3:
// Navigate to Profile // Navigate to Profile
// Navigator.push( // Navigator.push(
// // context, // context,
// // MaterialPageRoute(builder: (context) => TeacherProfile()), // MaterialPageRoute(
// ); // builder: (context) => ParentProfilePage(uid: uid, phoneNo: phoneNo, role: role),
// ),
// );
break; break;
} }
}, },
......
...@@ -172,7 +172,8 @@ class _KidsReportPageState extends State<KidsReportPage> { ...@@ -172,7 +172,8 @@ class _KidsReportPageState extends State<KidsReportPage> {
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
child: Text( child: Text(
'Save', 'Save',
style: TextStyle(color: const Color.fromARGB(255, 255, 255, 255)), style: TextStyle(
color: const Color.fromARGB(255, 255, 255, 255)),
), ),
), ),
), ),
......
...@@ -20,7 +20,24 @@ class ReportKidsViewPage extends StatelessWidget { ...@@ -20,7 +20,24 @@ class ReportKidsViewPage extends StatelessWidget {
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: StreamBuilder<QuerySnapshot>( body: StreamBuilder<QuerySnapshot>(
stream: _reportsStream, stream: _reportsStream,
...@@ -55,9 +72,9 @@ Widget _buildReportItem(String title, Map<String, dynamic> data) { ...@@ -55,9 +72,9 @@ Widget _buildReportItem(String title, Map<String, dynamic> data) {
data.remove('sId'); data.remove('sId');
return Card( return Card(
margin: EdgeInsets.symmetric(vertical: 8, horizontal: 16), margin: EdgeInsets.symmetric(vertical: 8, horizontal: 14),
child: Padding( child: Padding(
padding: EdgeInsets.all(16), padding: EdgeInsets.all(8),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
...@@ -80,7 +97,7 @@ Widget _buildReportItem(String title, Map<String, dynamic> data) { ...@@ -80,7 +97,7 @@ Widget _buildReportItem(String title, Map<String, dynamic> data) {
Text( Text(
entry.key, entry.key,
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
), ),
), ),
Text(entry.value ?? 'Not provided'), Text(entry.value ?? 'Not provided'),
......
...@@ -33,7 +33,7 @@ class KidsReportsPage extends StatelessWidget { ...@@ -33,7 +33,7 @@ class KidsReportsPage extends StatelessWidget {
// letterSpacing: -0.96, // letterSpacing: -0.96,
// ), // ),
// ), // ),
SizedBox(height: 20), // Add space here SizedBox(height: 20),
Text( Text(
'Select Kids ', 'Select Kids ',
style: TextStyle( style: TextStyle(
......
...@@ -192,7 +192,7 @@ class _LoginPage extends State<LoginPage> { ...@@ -192,7 +192,7 @@ class _LoginPage extends State<LoginPage> {
} else { } else {
AwesomeDialog( AwesomeDialog(
context: context, context: context,
dialogType: DialogType.info, dialogType: DialogType.success,
animType: AnimType.rightSlide, animType: AnimType.rightSlide,
title: ' login Parent', title: ' login Parent',
desc: ' Go to your parent home page', desc: ' Go to your parent home page',
......
...@@ -186,7 +186,7 @@ class ParentHomePage extends StatelessWidget { ...@@ -186,7 +186,7 @@ class ParentHomePage extends StatelessWidget {
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) =>
pChildrenProfilePage(document, "P"), pChildrenProfilePage(document, "P", pUser: 'user',),
), ),
); );
}, },
...@@ -253,7 +253,6 @@ class ParentHomePage extends StatelessWidget { ...@@ -253,7 +253,6 @@ class ParentHomePage extends StatelessWidget {
context, context,
MaterialPageRoute(builder: (context) => GamesPage()), MaterialPageRoute(builder: (context) => GamesPage()),
); );
break; break;
case 3: case 3:
// Navigate to Profile // Navigate to Profile
......
...@@ -2,6 +2,7 @@ import 'package:cloud_firestore/cloud_firestore.dart'; ...@@ -2,6 +2,7 @@ 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/ChatScreen.dart';
import 'package:mobile_application_kids/games.dart';
import 'package:mobile_application_kids/p_or_t.dart'; import 'package:mobile_application_kids/p_or_t.dart';
import 'package:mobile_application_kids/parenthome.dart'; import 'package:mobile_application_kids/parenthome.dart';
...@@ -169,25 +170,46 @@ class _ParentProfilePageState extends State<ParentProfilePage> { ...@@ -169,25 +170,46 @@ class _ParentProfilePageState extends State<ParentProfilePage> {
icon: Icon(Icons.chat), icon: Icon(Icons.chat),
label: 'Chat', label: 'Chat',
), ),
BottomNavigationBarItem(
icon: Icon(Icons.sports_baseball),
label: 'Games',
),
BottomNavigationBarItem( BottomNavigationBarItem(
icon: Icon(Icons.person), icon: Icon(Icons.person),
label: 'Profile', label: 'Profile',
), ),
], ],
selectedItemColor: Colors.blue, selectedItemColor: Colors.blueAccent,
currentIndex: 2, unselectedItemColor: Colors.grey,
currentIndex: 3,
onTap: (index) { onTap: (index) {
if (index == 0) { switch (index) {
Navigator.push( case 0:
context, // Navigate to Home
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ParentHomePage(phoneNo, role)), MaterialPageRoute(builder: (context) => ParentHomePage(phoneNo, role)),
); );
} break;
if (index == 1) { case 1:
// Navigate to Chat
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatScreen()),
);
break;
case 2:
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => ChatScreen()), MaterialPageRoute(
builder: (context) => GamesPage(),
),
); );
break;
case 3:
// Navigate to Profile
// Do nothing, we are already on the Games page
break;
} }
}, },
), ),
......
...@@ -32,7 +32,23 @@ class _ParentSignupPageState extends State<ParentSignupPage> { ...@@ -32,7 +32,23 @@ class _ParentSignupPageState extends State<ParentSignupPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Parent Signup'), title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text('Parent Register',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
), ),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
...@@ -73,15 +89,39 @@ class _ParentSignupPageState extends State<ParentSignupPage> { ...@@ -73,15 +89,39 @@ class _ParentSignupPageState extends State<ParentSignupPage> {
obscureText: true, obscureText: true,
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
ElevatedButton( Center(
onPressed: () { child: ElevatedButton(
// Logic to navigate to the next page with additional information onPressed: () {
// Logic to navigate to the next page with additional information
signUp(emailController.text, passwordController.text, 'parent', context);
},
style: ElevatedButton.styleFrom(
primary: Color.fromARGB(255, 48, 206, 53), // Note: 'const' was removed for consistency
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
),
child: Padding(
padding: EdgeInsets.all(12.0), // Note: 'const' was removed for consistency
child: Text(
'Finish',
style: TextStyle(
color: Color.fromARGB(255, 255, 255, 255), // Note: 'const' was removed for consistency
),
),
),
),
)
signUp(emailController.text, passwordController.text, // ElevatedButton(
'parent', context); // onPressed: () {
}, // // Logic to navigate to the next page with additional information
child: Text('Finish'),
), // signUp(emailController.text, passwordController.text,
// 'parent', context);
// },
// child: Text('Finish'),
// ),
], ],
), ),
), ),
......
...@@ -148,6 +148,7 @@ class TeacherHomePage extends StatelessWidget { ...@@ -148,6 +148,7 @@ class TeacherHomePage extends StatelessWidget {
itemBuilder: (context, index) { itemBuilder: (context, index) {
var document = snapshot.data!.docs[index]; var document = snapshot.data!.docs[index];
var className = document['className']; var className = document['className'];
print(document); print(document);
return Padding( return Padding(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
...@@ -173,7 +174,7 @@ class TeacherHomePage extends StatelessWidget { ...@@ -173,7 +174,7 @@ class TeacherHomePage extends StatelessWidget {
Row( Row(
children: [ children: [
Text( Text(
'Class $index', 'Class ${index + 1}',
style: poppinsTextStyle.copyWith( style: poppinsTextStyle.copyWith(
fontSize: 14.0), fontSize: 14.0),
), ),
......
...@@ -30,7 +30,23 @@ class _TeacherSignupPageState extends State<TeacherSignupPage> { ...@@ -30,7 +30,23 @@ class _TeacherSignupPageState extends State<TeacherSignupPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Teacher Signup'), title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text('Teacher Register',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
), ),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
...@@ -71,7 +87,8 @@ class _TeacherSignupPageState extends State<TeacherSignupPage> { ...@@ -71,7 +87,8 @@ class _TeacherSignupPageState extends State<TeacherSignupPage> {
obscureText: true, obscureText: true,
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
ElevatedButton( Center(
child:ElevatedButton(
onPressed: () { onPressed: () {
// Logic to navigate to the next page with additional information // Logic to navigate to the next page with additional information
Navigator.push( Navigator.push(
...@@ -87,8 +104,20 @@ class _TeacherSignupPageState extends State<TeacherSignupPage> { ...@@ -87,8 +104,20 @@ class _TeacherSignupPageState extends State<TeacherSignupPage> {
), ),
); );
}, },
child: Text('Next'), style: ElevatedButton.styleFrom(
), primary: Color.fromARGB(255, 48, 206, 53), // Green background color
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0), // Rounded corners
),
padding: EdgeInsets.all(12.0), // Padding inside the button
),
child: Text(
'Next',
style: TextStyle(
color: Color.fromARGB(255, 255, 255, 255), // White text color
),
),
),),
], ],
), ),
), ),
...@@ -157,7 +186,23 @@ class AdditionalInfoPage extends StatelessWidget { ...@@ -157,7 +186,23 @@ class AdditionalInfoPage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Additional Information'), title: Text(' '),
actions: [
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 16),
child: Text('Additional Information',
style: TextStyle(
color: Color(0xFF554994),
fontSize: 24,
fontFamily: 'Poppins',
fontWeight: FontWeight.w700,
height: 0.04,
letterSpacing: -0.96,
),
),
),
],
), ),
body: SingleChildScrollView( body: SingleChildScrollView(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(16.0),
...@@ -200,20 +245,38 @@ class AdditionalInfoPage extends StatelessWidget { ...@@ -200,20 +245,38 @@ class AdditionalInfoPage extends StatelessWidget {
// }, // },
// ), // ),
Text( Text(
'By checking the box you agree to our Terms and Conditions.', 'By finishing the form you agree to our Terms and Conditions.',
style: TextStyle(fontSize: 12), style: TextStyle(fontSize: 12),
), ),
], ],
), ),
const SizedBox(height: 20), const SizedBox(height: 12),
ElevatedButton( Align(
onPressed: () { alignment: Alignment.center, // Align the button to the right
// Logic to finish the teacher registration child: Container(
signUp(emailController.text, passwordController.text, rool, height: 48.0, // Reduced height
context); child: ElevatedButton(
}, onPressed: () {
child: Text('Finish'), // Logic to finish the teacher registration
), signUp(emailController.text, passwordController.text, rool, context);
},
style: ElevatedButton.styleFrom(
primary: Color.fromARGB(255, 48, 206, 53), // Green background color
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0), // Rounded corners
),
padding: EdgeInsets.symmetric(horizontal: 10.0), // Reduced padding
),
child: Text(
'Finish',
style: TextStyle(
color: Color.fromARGB(255, 255, 255, 255), // White text color
fontSize: 14, // Reduced font size to accommodate the reduced button height
),
),
),
),
)
], ],
), ),
), ),
......
...@@ -57,6 +57,14 @@ packages: ...@@ -57,6 +57,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.1" version: "1.1.1"
carousel_slider:
dependency: "direct main"
description:
name: carousel_slider
sha256: "9c695cc963bf1d04a47bd6021f68befce8970bcd61d24938e1fb0918cf5d9c42"
url: "https://pub.dev"
source: hosted
version: "4.2.1"
characters: characters:
dependency: transitive dependency: transitive
description: description:
...@@ -417,7 +425,7 @@ packages: ...@@ -417,7 +425,7 @@ packages:
source: hosted source: hosted
version: "0.2.1+1" version: "0.2.1+1"
intl: intl:
dependency: transitive dependency: "direct main"
description: description:
name: intl name: intl
sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91"
......
...@@ -47,7 +47,9 @@ dependencies: ...@@ -47,7 +47,9 @@ 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 table_calendar: ^3.0.3
carousel_slider: ^4.0.0
intl: ^0.17.0
dev_dependencies: dev_dependencies:
...@@ -98,7 +100,14 @@ flutter: ...@@ -98,7 +100,14 @@ flutter:
- lib/assets/ac5.png - lib/assets/ac5.png
- lib/assets/banner.png - lib/assets/banner.png
- lib/assets/ac6.png - lib/assets/ac6.png
- lib/assets/ac7.png - lib/assets/ac7.png
- lib/assets/parentprofile.JPG
- lib/assets/parentprof.PNG
- lib/assets/teacherprof.png
- lib/assets/I.png
- lib/assets/i2.png
- lib/assets/act_photo.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