diff --git a/flutter/.dart_tool/package_config.json b/flutter/.dart_tool/package_config.json
index 1cab25e..3d4a334 100644
--- a/flutter/.dart_tool/package_config.json
+++ b/flutter/.dart_tool/package_config.json
@@ -1 +1,410 @@
-{"configVersion":2,"packages":[{"name":"async","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0","packageUri":"lib/","languageVersion":"2.14"},{"name":"boolean_selector","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"characters","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"clock","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"collection","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"cupertino_icons","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5","packageUri":"lib/","languageVersion":"2.12"},{"name":"fake_async","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"flutter","rootUri":"file:///C:/flutter/packages/flutter","packageUri":"lib/","languageVersion":"2.17"},{"name":"flutter_lints","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1","packageUri":"lib/","languageVersion":"2.17"},{"name":"flutter_test","rootUri":"file:///C:/flutter/packages/flutter_test","packageUri":"lib/","languageVersion":"2.17"},{"name":"lints","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.0","packageUri":"lib/","languageVersion":"2.17"},{"name":"matcher","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12","packageUri":"lib/","languageVersion":"2.12"},{"name":"material_color_utilities","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5","packageUri":"lib/","languageVersion":"2.13"},{"name":"meta","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"path","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2","packageUri":"lib/","languageVersion":"2.12"},{"name":"sky_engine","rootUri":"file:///C:/flutter/bin/cache/pkg/sky_engine","packageUri":"lib/","languageVersion":"2.12"},{"name":"source_span","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0","packageUri":"lib/","languageVersion":"2.14"},{"name":"stack_trace","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"stream_channel","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"string_scanner","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"term_glyph","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"test_api","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12","packageUri":"lib/","languageVersion":"2.12"},{"name":"vector_math","rootUri":"file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2","packageUri":"lib/","languageVersion":"2.14"},{"name":"command_flutter","rootUri":"../","packageUri":"lib/","languageVersion":"2.18"},{"name":"flutter_gen","rootUri":"flutter_gen","languageVersion":"2.12"}],"generated":"2022-10-16T13:51:26.147136Z","generator":"pub","generatorVersion":"2.18.2"}
\ No newline at end of file
+{
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "_flutterfire_internals",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/_flutterfire_internals-1.0.5",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "async",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "boolean_selector",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "cached_network_image",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image-3.2.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "cached_network_image_platform_interface",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image_platform_interface-2.0.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "cached_network_image_web",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image_web-1.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "characters",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "clock",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "cloud_firestore",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-4.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "cloud_firestore_platform_interface",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_platform_interface-5.8.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "cloud_firestore_web",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-3.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "collection",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "crypto",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "cupertino_icons",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "fake_async",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "ffi",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-2.0.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "file",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/file-6.1.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "firebase_auth",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-4.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "firebase_auth_platform_interface",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth_platform_interface-6.10.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "firebase_auth_web",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-5.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "firebase_core",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-2.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "firebase_core_platform_interface",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_platform_interface-4.5.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "firebase_core_web",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-2.0.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "flutter",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/packages/flutter",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "flutter_blurhash",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_blurhash-0.7.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.15"
+ },
+ {
+ "name": "flutter_cache_manager",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_cache_manager-3.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "flutter_lints",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "flutter_test",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/packages/flutter_test",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "flutter_web_plugins",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/packages/flutter_web_plugins",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "http",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.13.5",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "http_parser",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "intl",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.17.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "js",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "lints",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "matcher",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "material_color_utilities",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5",
+ "packageUri": "lib/",
+ "languageVersion": "2.13"
+ },
+ {
+ "name": "meta",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "octo_image",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/octo_image-1.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "path",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "path_provider",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.11",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "path_provider_android",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.20",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "path_provider_ios",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "path_provider_linux",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "path_provider_macos",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "path_provider_platform_interface",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.5",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "path_provider_windows",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "pedantic",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "platform",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "plugin_platform_interface",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.1.3",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "process",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/process-4.2.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "rxdart",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/rxdart-0.27.5",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "sky_engine",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/bin/cache/pkg/sky_engine",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "source_span",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "sqflite",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-2.1.0+1",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "sqflite_common",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite_common-2.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.16"
+ },
+ {
+ "name": "stack_trace",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "stream_channel",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "string_scanner",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "synchronized",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/synchronized-3.0.0+3",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "term_glyph",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "test_api",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "typed_data",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "uuid",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/uuid-3.0.6",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "vector_math",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "win32",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/win32-3.0.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "xdg_directories",
+ "rootUri": "file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.2.0+2",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "command_flutter",
+ "rootUri": "../",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ }
+ ],
+ "generated": "2022-10-28T16:49:32.438672Z",
+ "generator": "pub",
+ "generatorVersion": "2.18.2"
+}
diff --git a/flutter/.dart_tool/package_config_subset b/flutter/.dart_tool/package_config_subset
index 16d8b8f..977d0fa 100644
--- a/flutter/.dart_tool/package_config_subset
+++ b/flutter/.dart_tool/package_config_subset
@@ -1,97 +1,269 @@
command_flutter
2.18
-file:///C:/Users/SCO/Documents/GitHub/CommandProjectForHackathon/flutter/
-file:///C:/Users/SCO/Documents/GitHub/CommandProjectForHackathon/flutter/lib/
+file:///home/foward01/projects/CommandProjectForHackathon-1/flutter/
+file:///home/foward01/projects/CommandProjectForHackathon-1/flutter/lib/
+_flutterfire_internals
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/_flutterfire_internals-1.0.5/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/_flutterfire_internals-1.0.5/lib/
async
2.14
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/lib/
boolean_selector
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib/
+cached_network_image
+2.18
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image-3.2.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image-3.2.2/lib/
+cached_network_image_platform_interface
+2.18
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image_platform_interface-2.0.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image_platform_interface-2.0.0/lib/
+cached_network_image_web
+2.18
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image_web-1.0.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image_web-1.0.2/lib/
characters
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/lib/
clock
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/lib/
+cloud_firestore
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-4.0.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-4.0.2/lib/
+cloud_firestore_platform_interface
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_platform_interface-5.8.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_platform_interface-5.8.2/lib/
+cloud_firestore_web
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-3.0.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-3.0.2/lib/
collection
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/
+crypto
+2.14
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2/lib/
cupertino_icons
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/lib/
fake_async
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/lib/
+ffi
+2.17
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-2.0.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-2.0.1/lib/
+file
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/file-6.1.4/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/file-6.1.4/lib/
+firebase_auth
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-4.0.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-4.0.2/lib/
+firebase_auth_platform_interface
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth_platform_interface-6.10.4/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth_platform_interface-6.10.4/lib/
+firebase_auth_web
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-5.0.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-5.0.2/lib/
+firebase_core
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-2.1.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-2.1.0/lib/
+firebase_core_platform_interface
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_platform_interface-4.5.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_platform_interface-4.5.1/lib/
+firebase_core_web
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-2.0.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-2.0.0/lib/
+flutter_blurhash
+2.15
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_blurhash-0.7.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_blurhash-0.7.0/lib/
+flutter_cache_manager
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_cache_manager-3.3.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_cache_manager-3.3.0/lib/
flutter_lints
2.17
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/lib/
+http
+2.14
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.13.5/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.13.5/lib/
+http_parser
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.2/lib/
+intl
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.17.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.17.0/lib/
+js
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.4/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.4/lib/
lints
2.17
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.0/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.0/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/lints-2.0.1/lib/
matcher
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/lib/
material_color_utilities
2.13
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/lib/
meta
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/lib/
+octo_image
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/octo_image-1.0.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/octo_image-1.0.2/lib/
path
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/lib/
+path_provider
+2.14
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.11/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.11/lib/
+path_provider_android
+2.14
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.20/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.20/lib/
+path_provider_ios
+2.14
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11/lib/
+path_provider_linux
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/lib/
+path_provider_macos
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/lib/
+path_provider_platform_interface
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.5/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.5/lib/
+path_provider_windows
+2.17
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/lib/
+pedantic
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.1/lib/
+platform
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.1.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.1.0/lib/
+plugin_platform_interface
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.1.3/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.1.3/lib/
+process
+2.14
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/process-4.2.4/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/process-4.2.4/lib/
+rxdart
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/rxdart-0.27.5/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/rxdart-0.27.5/lib/
source_span
2.14
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/lib/
+sqflite
+2.18
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-2.1.0+1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-2.1.0+1/lib/
+sqflite_common
+2.16
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite_common-2.3.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite_common-2.3.0/lib/
stack_trace
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/lib/
stream_channel
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib/
string_scanner
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/lib/
+synchronized
+2.14
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/synchronized-3.0.0+3/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/synchronized-3.0.0+3/lib/
term_glyph
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/lib/
test_api
2.12
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/lib/
+typed_data
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1/lib/
+uuid
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/uuid-3.0.6/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/uuid-3.0.6/lib/
vector_math
2.14
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/
-file:///C:/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/lib/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/lib/
+win32
+2.17
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/win32-3.0.1/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/win32-3.0.1/lib/
+xdg_directories
+2.12
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.2.0+2/
+file:///home/foward01/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.2.0+2/lib/
sky_engine
2.12
-file:///C:/flutter/bin/cache/pkg/sky_engine/
-file:///C:/flutter/bin/cache/pkg/sky_engine/lib/
+file:///home/foward01/snap/flutter/common/flutter/bin/cache/pkg/sky_engine/
+file:///home/foward01/snap/flutter/common/flutter/bin/cache/pkg/sky_engine/lib/
flutter
2.17
-file:///C:/flutter/packages/flutter/
-file:///C:/flutter/packages/flutter/lib/
+file:///home/foward01/snap/flutter/common/flutter/packages/flutter/
+file:///home/foward01/snap/flutter/common/flutter/packages/flutter/lib/
flutter_test
2.17
-file:///C:/flutter/packages/flutter_test/
-file:///C:/flutter/packages/flutter_test/lib/
+file:///home/foward01/snap/flutter/common/flutter/packages/flutter_test/
+file:///home/foward01/snap/flutter/common/flutter/packages/flutter_test/lib/
+flutter_web_plugins
+2.17
+file:///home/foward01/snap/flutter/common/flutter/packages/flutter_web_plugins/
+file:///home/foward01/snap/flutter/common/flutter/packages/flutter_web_plugins/lib/
2
diff --git a/flutter/.dart_tool/version b/flutter/.dart_tool/version
index 3f09e91..2c6109e 100644
--- a/flutter/.dart_tool/version
+++ b/flutter/.dart_tool/version
@@ -1 +1 @@
-3.3.3
\ No newline at end of file
+3.3.4
\ No newline at end of file
diff --git a/flutter/.idea/libraries/Flutter_Plugins.xml b/flutter/.idea/libraries/Flutter_Plugins.xml
index b0f6971..602a26d 100644
--- a/flutter/.idea/libraries/Flutter_Plugins.xml
+++ b/flutter/.idea/libraries/Flutter_Plugins.xml
@@ -1,6 +1,20 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/flutter/android/app/build.gradle b/flutter/android/app/build.gradle
index b717b8a..14c5324 100644
--- a/flutter/android/app/build.gradle
+++ b/flutter/android/app/build.gradle
@@ -24,6 +24,12 @@ if (flutterVersionName == null) {
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+apply plugin: 'com.android.application'
+apply plugin: 'com.google.gms.google-services'
+
+ // Add the Google services Gradle plugin
+
+
android {
compileSdkVersion flutter.compileSdkVersion
@@ -47,7 +53,7 @@ android {
applicationId "com.example.command_flutter"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
- minSdkVersion flutter.minSdkVersion
+ minSdkVersion 22//flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
@@ -68,4 +74,5 @@ flutter {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation platform('com.google.firebase:firebase-bom:31.0.1')
}
diff --git a/flutter/android/app/google-services.json b/flutter/android/app/google-services.json
new file mode 100644
index 0000000..d426d1e
--- /dev/null
+++ b/flutter/android/app/google-services.json
@@ -0,0 +1,39 @@
+{
+ "project_info": {
+ "project_number": "112117989138",
+ "project_id": "chat-data-50b33",
+ "storage_bucket": "chat-data-50b33.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:112117989138:android:d4681f95b1087904943dcb",
+ "android_client_info": {
+ "package_name": "com.example.command_flutter"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "112117989138-q73rbh4rre4sgdn80lbh3e3hlbjamg7q.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCVy3vA-6D9dwvwDQb7WzEFCp5ThfoQoRA"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "112117989138-q73rbh4rre4sgdn80lbh3e3hlbjamg7q.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/flutter/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/flutter/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
index 539ab02..6042410 100644
--- a/flutter/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
+++ b/flutter/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
@@ -15,5 +15,30 @@
public final class GeneratedPluginRegistrant {
private static final String TAG = "GeneratedPluginRegistrant";
public static void registerWith(@NonNull FlutterEngine flutterEngine) {
+ try {
+ flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.firestore.FlutterFirebaseFirestorePlugin());
+ } catch(Exception e) {
+ Log.e(TAG, "Error registering plugin cloud_firestore, io.flutter.plugins.firebase.firestore.FlutterFirebaseFirestorePlugin", e);
+ }
+ try {
+ flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.auth.FlutterFirebaseAuthPlugin());
+ } catch(Exception e) {
+ Log.e(TAG, "Error registering plugin firebase_auth, io.flutter.plugins.firebase.auth.FlutterFirebaseAuthPlugin", e);
+ }
+ try {
+ flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin());
+ } catch(Exception e) {
+ Log.e(TAG, "Error registering plugin firebase_core, io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin", e);
+ }
+ try {
+ flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
+ } catch(Exception e) {
+ Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e);
+ }
+ try {
+ flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin());
+ } catch(Exception e) {
+ Log.e(TAG, "Error registering plugin sqflite, com.tekartik.sqflite.SqflitePlugin", e);
+ }
}
}
diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle
index 83ae220..99f1e0e 100644
--- a/flutter/android/build.gradle
+++ b/flutter/android/build.gradle
@@ -8,6 +8,7 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath 'com.google.gms:google-services:4.3.13'
}
}
diff --git a/flutter/android/local.properties b/flutter/android/local.properties
index b03bce6..ebe5718 100644
--- a/flutter/android/local.properties
+++ b/flutter/android/local.properties
@@ -1,5 +1,5 @@
-sdk.dir=C:\\Users\\SCO\\AppData\\Local\\Android\\sdk
-flutter.sdk=C:\\flutter
+sdk.dir=/home/foward01/Android/Sdk
+flutter.sdk=/home/foward01/snap/flutter/common/flutter
flutter.buildMode=debug
flutter.versionName=1.0.0
flutter.versionCode=1
\ No newline at end of file
diff --git a/flutter/command_flutter.iml b/flutter/command_flutter.iml
index 80ec823..6e7f913 100644
--- a/flutter/command_flutter.iml
+++ b/flutter/command_flutter.iml
@@ -10,5 +10,6 @@
+
\ No newline at end of file
diff --git a/flutter/ios/Runner/GeneratedPluginRegistrant.m b/flutter/ios/Runner/GeneratedPluginRegistrant.m
index efe65ec..147e90c 100644
--- a/flutter/ios/Runner/GeneratedPluginRegistrant.m
+++ b/flutter/ios/Runner/GeneratedPluginRegistrant.m
@@ -6,9 +6,44 @@
#import "GeneratedPluginRegistrant.h"
+#if __has_include()
+#import
+#else
+@import cloud_firestore;
+#endif
+
+#if __has_include()
+#import
+#else
+@import firebase_auth;
+#endif
+
+#if __has_include()
+#import
+#else
+@import firebase_core;
+#endif
+
+#if __has_include()
+#import
+#else
+@import path_provider_ios;
+#endif
+
+#if __has_include()
+#import
+#else
+@import sqflite;
+#endif
+
@implementation GeneratedPluginRegistrant
+ (void)registerWithRegistry:(NSObject*)registry {
+ [FLTFirebaseFirestorePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseFirestorePlugin"]];
+ [FLTFirebaseAuthPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseAuthPlugin"]];
+ [FLTFirebaseCorePlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTFirebaseCorePlugin"]];
+ [FLTPathProviderPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTPathProviderPlugin"]];
+ [SqflitePlugin registerWithRegistrar:[registry registrarForPlugin:@"SqflitePlugin"]];
}
@end
diff --git a/flutter/ios/Runner/GoogleService-Info.plist b/flutter/ios/Runner/GoogleService-Info.plist
new file mode 100644
index 0000000..0a51bd5
--- /dev/null
+++ b/flutter/ios/Runner/GoogleService-Info.plist
@@ -0,0 +1,34 @@
+
+
+
+
+ CLIENT_ID
+ 112117989138-tur0gu6lcpf2bs5k84dho1bvjn99sqhd.apps.googleusercontent.com
+ REVERSED_CLIENT_ID
+ com.googleusercontent.apps.112117989138-tur0gu6lcpf2bs5k84dho1bvjn99sqhd
+ API_KEY
+ AIzaSyCtTX3FIVSV8ZBMMf4FJg_AGQN5P0-X_1I
+ GCM_SENDER_ID
+ 112117989138
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.example.command
+ PROJECT_ID
+ chat-data-50b33
+ STORAGE_BUCKET
+ chat-data-50b33.appspot.com
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:112117989138:ios:c528a3bdf349d26c943dcb
+
+
\ No newline at end of file
diff --git a/flutter/lib/Chats/Chats.dart b/flutter/lib/Chats/Chats.dart
new file mode 100644
index 0000000..268c923
--- /dev/null
+++ b/flutter/lib/Chats/Chats.dart
@@ -0,0 +1,75 @@
+import 'package:command_flutter/Chats/Data/Admin.dart';
+import 'package:command_flutter/Chats/Models/User.dart';
+import 'package:command_flutter/Chats/Pages/ChatPage.dart';
+import 'package:command_flutter/Chats/api/firebase.dart';
+import 'package:flutter/material.dart';
+
+
+class Chats extends StatefulWidget {
+ const Chats({super.key});
+
+ @override
+ State createState() => _ChatsState();
+}
+
+class _ChatsState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: Text("Сообщения"),
+ actions: [
+ IconButton(
+ onPressed: () {
+ Navigator.of(context).push(
+ MaterialPageRoute(builder: (context) {
+ return Container(
+ child: Text("В разработке"),
+ ); //SearchPage();
+ }),
+ );
+ },
+ icon: Icon(Icons.search),
+ splashRadius: 20,
+ ),
+ ],
+ ),
+ body:
+ StreamBuilder>(
+ stream: base.readUsers(),
+ builder: (context, snapshot) {
+ final users = snapshot.data!;
+ return ListView(
+ children: users.map(buildUser).toList(),
+ );
+ }),
+ );
+ }
+
+ Widget buildUser(User user) {
+ return ListTile(
+ leading: CircleAvatar(
+ radius: 20.0,
+ backgroundImage: NetworkImage(user.urlAvatar),
+ ),
+ title: Text(user.name),
+ subtitle: Text(user.description),
+ onTap: () {
+ Navigator.of(context).push(MaterialPageRoute(
+ builder: (context) => ChatPage(
+ currentUserId: myId,
+ friendId: user.idUser!,
+ friendName: user.name,
+ friendDescription: user.name,
+ friendImage: user.urlAvatar)));
+ },
+ );
+ }
+
+ Widget buildText(String text) => Center(
+ child: Text(
+ text,
+ style: TextStyle(fontSize: 24, color: Colors.white),
+ ),
+ );
+}
diff --git a/flutter/lib/Chats/Data/Admin.dart b/flutter/lib/Chats/Data/Admin.dart
new file mode 100644
index 0000000..00ec5bf
--- /dev/null
+++ b/flutter/lib/Chats/Data/Admin.dart
@@ -0,0 +1,4 @@
+String myId = 'b9YFGIpJjzGpJftfLnS6';
+String myUsername = 'user1';
+String myDecription = 'citizen';
+String myUrlAvatar = 'https://avatars.mds.yandex.net/i?id=e3f19061fc32953419cea5c5a238f86c_l-5309503-images-thumbs&n=13';
\ No newline at end of file
diff --git a/flutter/lib/Chats/Data/users.dart b/flutter/lib/Chats/Data/users.dart
new file mode 100644
index 0000000..c287312
--- /dev/null
+++ b/flutter/lib/Chats/Data/users.dart
@@ -0,0 +1,36 @@
+import 'package:cloud_firestore/cloud_firestore.dart';
+
+import '../Models/User.dart';
+
+
+ List users = [
+ User(
+ name: 'user1',
+ description: 'citizen',
+ urlAvatar:
+ 'https://avatars.mds.yandex.net/i?id=e3f19061fc32953419cea5c5a238f86c_l-5309503-images-thumbs&n=13',
+ lastMessageTime: Timestamp.now(),
+ ),
+ User(
+ name: 'user2',
+ description: 'citizen',
+ urlAvatar:
+ 'https://avatars.mds.yandex.net/i?id=e3f19061fc32953419cea5c5a238f86c_l-5309503-images-thumbs&n=13',
+ lastMessageTime: Timestamp.now(),
+ ),
+ User(
+ name: 'user3',
+ description: 'citizen',
+ urlAvatar:
+ 'https://avatars.mds.yandex.net/i?id=e3f19061fc32953419cea5c5a238f86c_l-5309503-images-thumbs&n=13',
+ lastMessageTime: Timestamp.now(),
+ ),
+ User(
+ name: 'user4',
+ description: 'citizen',
+ urlAvatar:
+ 'https://avatars.mds.yandex.net/i?id=e3f19061fc32953419cea5c5a238f86c_l-5309503-images-thumbs&n=13',
+ lastMessageTime: Timestamp.now(),
+ ),
+ ];
+
diff --git a/flutter/lib/Chats/Models/ModelPerson.dart b/flutter/lib/Chats/Models/ModelPerson.dart
new file mode 100644
index 0000000..bc01800
--- /dev/null
+++ b/flutter/lib/Chats/Models/ModelPerson.dart
@@ -0,0 +1,9 @@
+// class Person {
+// String Name;
+// String Description;
+
+// Person({
+// required this.Name,
+// required this.Description
+// });
+// }
diff --git a/flutter/lib/Chats/Models/User.dart b/flutter/lib/Chats/Models/User.dart
new file mode 100644
index 0000000..96c2fd2
--- /dev/null
+++ b/flutter/lib/Chats/Models/User.dart
@@ -0,0 +1,53 @@
+import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:meta/meta.dart';
+
+class UserField {
+ static final String lastMessageTime = 'lastMessageTime';
+}
+
+class User {
+ final String? idUser;
+ final String name;
+ final String urlAvatar;
+ final String description;
+ final Timestamp lastMessageTime;
+
+ const User({
+ this.idUser,
+ required this.name,
+ required this.urlAvatar,
+ required this.description,
+ required this.lastMessageTime,
+ });
+ User copyWith({
+ String? idUser,
+ String? name,
+ String? urlAvatar,
+ String? description,
+ Timestamp? lastMessageTime,
+ }) =>
+ User(
+ idUser: idUser ?? this.idUser,
+ name: name ?? this.name,
+ urlAvatar: urlAvatar ?? this.urlAvatar,
+ description: description ?? this.description,
+ lastMessageTime: lastMessageTime ?? this.lastMessageTime,
+ );
+
+ Map toJson() => {
+ 'idUser': idUser,
+ 'name': name,
+ 'description': description,
+ 'urlAvatar': urlAvatar,
+ 'lastMessageTime': lastMessageTime,
+ };
+
+ static User fromJson(Map json) =>
+ User(
+ idUser: json['idUser'],
+ name: json['name'],
+ description: json['description'],
+ urlAvatar: json['urlAvatar'],
+ lastMessageTime: json['lastMessageTime'],
+ );
+}
diff --git a/flutter/lib/Chats/Models/message.dart b/flutter/lib/Chats/Models/message.dart
new file mode 100644
index 0000000..158efb6
--- /dev/null
+++ b/flutter/lib/Chats/Models/message.dart
@@ -0,0 +1,34 @@
+class MessageField {
+ static final String createdAt = 'createdAt';
+}
+
+class Message{
+ String idUser;
+ String username;
+ String urlAvatar;
+ String message;
+ DateTime createdAt;
+
+ Message({
+ required this.idUser,
+ required this.urlAvatar,
+ required this.username,
+ required this.message,
+ required this.createdAt,
+ });
+ static Message fromJson(Map json) => Message(
+ idUser: json['idUser'],
+ urlAvatar: json['urlAvatar'],
+ username: json['username'],
+ message: json['message'],
+ createdAt: json['createdAt'],
+ );
+
+ Map toJson() => {
+ 'idUser': idUser,
+ 'urlAvatar': urlAvatar,
+ 'username': username,
+ 'message': message,
+ 'createdAt': createdAt,
+ };
+}
\ No newline at end of file
diff --git a/flutter/lib/Chats/Pages/ChatPage.dart b/flutter/lib/Chats/Pages/ChatPage.dart
new file mode 100644
index 0000000..547162a
--- /dev/null
+++ b/flutter/lib/Chats/Pages/ChatPage.dart
@@ -0,0 +1,177 @@
+import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:command_flutter/Chats/Data/Admin.dart';
+import 'package:command_flutter/Chats/Widgets/single_message.dart';
+import 'package:flutter/material.dart';
+
+class ChatPage extends StatelessWidget {
+ final String currentUserId;
+ final String friendId;
+ final String friendName;
+ final String friendDescription;
+ final String friendImage;
+
+ ChatPage({
+ required this.currentUserId,
+ required this.friendId,
+ required this.friendName,
+ required this.friendDescription,
+ required this.friendImage,
+ });
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: ListTile(
+ leading: CircleAvatar(
+ radius: 20.0,
+ backgroundImage: NetworkImage(friendImage),
+ ),
+ title: Text(friendName),
+ subtitle: Text(friendDescription),
+ ),
+ ),
+ body: Column(
+ children: [
+ Expanded(
+ child: Container(
+ padding: EdgeInsets.all(10),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(25),
+ topRight: Radius.circular(25))),
+ child: StreamBuilder(
+ stream: FirebaseFirestore.instance
+ .collection("users")
+ .doc(currentUserId)
+ .collection('messages')
+ .doc(friendId)
+ .collection('chats')
+ .orderBy("date", descending: true)
+ .snapshots(),
+ builder: (context, AsyncSnapshot snapshot) {
+ if (snapshot.hasData) {
+ if (snapshot.data.docs.length < 1) {
+ return Center(
+ child: Text("Say Hi"),
+ );
+ }
+ return ListView.builder(
+ itemCount: snapshot.data.docs.length,
+ reverse: true,
+ physics: BouncingScrollPhysics(),
+ itemBuilder: (context, index) {
+ bool isMe = snapshot.data.docs[index]['senderId'] ==
+ currentUserId;
+ return SingleMessage(
+ message: snapshot.data.docs[index]['message'],
+ isMe: isMe);
+ });
+ }
+ return Center(child: CircularProgressIndicator());
+ }),
+ )),
+ newMessage(currentUserId: currentUserId, friendId: friendId)
+ ],
+ ));
+ }
+}
+
+// Виджет для написания нового сообщения
+class newMessage extends StatefulWidget {
+ //final User currentUser;
+ final String currentUserId;
+ final String friendId;
+ const newMessage(
+ {required this.currentUserId, required this.friendId, super.key});
+
+ @override
+ State createState() => _newMessageState();
+}
+
+class _newMessageState extends State {
+ final _controller = TextEditingController();
+
+ void sendMessage() async {
+ String message = _controller.text;
+ _controller.clear();
+ await FirebaseFirestore.instance
+ .collection('users')
+ .doc(myId)
+ .collection('messages')
+ .doc(widget.friendId)
+ .collection('chats')
+ .add({
+ "senderId": myId,
+ "receiverId": widget.friendId,
+ "message": message,
+ "type": "text",
+ "date": DateTime.now(),
+ }).then((value) {
+ FirebaseFirestore.instance
+ .collection('users')
+ .doc(myId)
+ .collection('messages')
+ .doc(widget.friendId)
+ .set({
+ 'last_msg': message,
+ });
+ });
+
+ await FirebaseFirestore.instance
+ .collection('users')
+ .doc(myId)
+ .collection('messages')
+ .doc(myId)
+ .collection("chats")
+ .add({
+ "senderId": myId,
+ "receiverId": widget.friendId,
+ "message": message,
+ "type": "text",
+ "date": DateTime.now(),
+ }).then((value) {
+ FirebaseFirestore.instance
+ .collection('users')
+ .doc(myId)
+ .collection('messages')
+ .doc(myId)
+ .set({"last_msg": message});
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ child: Padding(
+ padding: EdgeInsets.all(12),
+ child: Row(
+ children: [
+ Expanded(
+ child: Flexible(
+ child: SizedBox(
+ child: TextFormField(
+ controller: _controller,
+ scrollPadding: EdgeInsets.all(1),
+ decoration: InputDecoration(
+ contentPadding:
+ EdgeInsets.symmetric(vertical: 1, horizontal: 10),
+ border: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(50.0)),
+ hintText: "Напишите сообщение..."),
+ ),
+ ),
+ ),
+ ),
+ IconButton(
+ onPressed: () async {
+ sendMessage();
+ },
+ icon: Icon(Icons.send))
+ ],
+ ),
+ ),
+ );
+ }
+}
diff --git a/flutter/lib/Chats/Pages/SearchPage.dart b/flutter/lib/Chats/Pages/SearchPage.dart
new file mode 100644
index 0000000..84fd8cf
--- /dev/null
+++ b/flutter/lib/Chats/Pages/SearchPage.dart
@@ -0,0 +1,167 @@
+// import 'package:command_flutter/Models/User.dart';
+// import 'package:command_flutter/Pages/ChatPage.dart';
+// import 'package:flutter/material.dart';
+// import 'package:flutter/services.dart';
+
+// import '../Chats.dart';
+// import '../Data/users.dart';
+
+// class SearchPage extends StatelessWidget {
+// const SearchPage({super.key});
+
+// @override
+// Widget build(BuildContext context) {
+// return Scaffold(
+// appBar: AppBar(
+// title: TextField(
+// keyboardType: TextInputType.url,
+// decoration: InputDecoration(
+// border: InputBorder.none, hintText: "Поиск по ФИО"),
+// ), //Text("Поиск"),
+// ),
+// body: SafeArea(
+// child: StreamBuilder>(
+// stream: _Firebase.getUsers(),
+// builder: (context, snapshot) {
+// switch (snapshot.connectionState) {
+// case ConnectionState.waiting:
+// return Center(child: CircularProgressIndicator());
+// default:
+// if (snapshot.hasError) {
+// print(snapshot.error);
+// return buildText('Something Went Wrong Try later');
+// } else {
+// final users = snapshot.data;
+
+// if (users.isEmpty) {
+// return buildText('No Users Found');
+// } else
+// return Column(
+// children: [
+// ChatHeaderWidget(users: users),
+// ChatBodyWidget(users: users)
+// ],
+// );
+// }
+// }
+// },
+// ),
+// ),
+// );
+// }
+// Widget buildText(String text) => Center(
+// child: Text(
+// text,
+// style: TextStyle(fontSize: 24, color: Colors.white),
+// ),
+// );
+// }
+
+
+
+
+
+
+// import 'package:cloud_firestore/cloud_firestore.dart';
+// import 'package:command_flutter/Models/User.dart';
+// import 'package:command_flutter/Pages/ChatPage.dart';
+// import 'package:flutter/material.dart';
+
+
+// class SearchScreen extends StatefulWidget {
+// User user;
+// SearchScreen(this.user);
+
+// @override
+// _SearchScreenState createState() => _SearchScreenState();
+// }
+
+// class _SearchScreenState extends State {
+// TextEditingController searchController = TextEditingController();
+// List