Feat: add permission handle for upload file
This commit is contained in:
parent
5535879255
commit
afc667838b
|
@ -3,13 +3,13 @@
|
|||
"packages": [
|
||||
{
|
||||
"name": "_flutterfire_internals",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/_flutterfire_internals-1.3.53",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/_flutterfire_internals-1.3.54",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.2"
|
||||
},
|
||||
{
|
||||
"name": "args",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.6.0",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.7.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.3"
|
||||
},
|
||||
|
@ -57,19 +57,19 @@
|
|||
},
|
||||
{
|
||||
"name": "cloud_firestore",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.4",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.6",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.2"
|
||||
},
|
||||
{
|
||||
"name": "cloud_firestore_platform_interface",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_platform_interface-6.6.4",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_platform_interface-6.6.6",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.2"
|
||||
},
|
||||
{
|
||||
"name": "cloud_firestore_web",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.4",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.6",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.4"
|
||||
},
|
||||
|
@ -79,6 +79,12 @@
|
|||
"packageUri": "lib/",
|
||||
"languageVersion": "2.18"
|
||||
},
|
||||
{
|
||||
"name": "cross_file",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cross_file-0.3.4+2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.3"
|
||||
},
|
||||
{
|
||||
"name": "crypto",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/crypto-3.0.6",
|
||||
|
@ -91,6 +97,18 @@
|
|||
"packageUri": "lib/",
|
||||
"languageVersion": "3.1"
|
||||
},
|
||||
{
|
||||
"name": "device_info_plus",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus-11.3.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.4"
|
||||
},
|
||||
{
|
||||
"name": "device_info_plus_platform_interface",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus_platform_interface-7.0.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.18"
|
||||
},
|
||||
{
|
||||
"name": "dotted_dashed_line",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/dotted_dashed_line-0.0.3",
|
||||
|
@ -121,27 +139,33 @@
|
|||
"packageUri": "lib/",
|
||||
"languageVersion": "3.0"
|
||||
},
|
||||
{
|
||||
"name": "file_picker",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/file_picker-10.0.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.4"
|
||||
},
|
||||
{
|
||||
"name": "firebase_auth",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.1",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.2"
|
||||
},
|
||||
{
|
||||
"name": "firebase_auth_platform_interface",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_platform_interface-7.6.1",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_platform_interface-7.6.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.2"
|
||||
},
|
||||
{
|
||||
"name": "firebase_auth_web",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.1",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.4"
|
||||
},
|
||||
{
|
||||
"name": "firebase_core",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.12.1",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.13.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.2"
|
||||
},
|
||||
|
@ -153,25 +177,25 @@
|
|||
},
|
||||
{
|
||||
"name": "firebase_core_web",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.21.1",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.22.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.4"
|
||||
},
|
||||
{
|
||||
"name": "firebase_storage",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage-12.4.4",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage-12.4.5",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.2"
|
||||
},
|
||||
{
|
||||
"name": "firebase_storage_platform_interface",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_platform_interface-5.2.4",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_platform_interface-5.2.5",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.2"
|
||||
},
|
||||
{
|
||||
"name": "firebase_storage_web",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_web-3.10.11",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_web-3.10.12",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.4"
|
||||
},
|
||||
|
@ -187,6 +211,12 @@
|
|||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "flutter_plugin_android_lifecycle",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.26",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.5"
|
||||
},
|
||||
{
|
||||
"name": "flutter_screenutil",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_screenutil-5.9.3",
|
||||
|
@ -219,7 +249,7 @@
|
|||
},
|
||||
{
|
||||
"name": "get",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.7.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.15"
|
||||
},
|
||||
|
@ -337,6 +367,42 @@
|
|||
"packageUri": "lib/",
|
||||
"languageVersion": "3.2"
|
||||
},
|
||||
{
|
||||
"name": "permission_handler",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler-11.4.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.5"
|
||||
},
|
||||
{
|
||||
"name": "permission_handler_android",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_android-12.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.5"
|
||||
},
|
||||
{
|
||||
"name": "permission_handler_apple",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_apple-9.4.6",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.15"
|
||||
},
|
||||
{
|
||||
"name": "permission_handler_html",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_html-0.1.3+5",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.3"
|
||||
},
|
||||
{
|
||||
"name": "permission_handler_platform_interface",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_platform_interface-4.3.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.5"
|
||||
},
|
||||
{
|
||||
"name": "permission_handler_windows",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_windows-0.2.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "petitparser",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/petitparser-6.0.2",
|
||||
|
@ -363,13 +429,13 @@
|
|||
},
|
||||
{
|
||||
"name": "shared_preferences",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.2",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.5"
|
||||
},
|
||||
{
|
||||
"name": "shared_preferences_android",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.6",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.7",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.5"
|
||||
},
|
||||
|
@ -489,7 +555,19 @@
|
|||
},
|
||||
{
|
||||
"name": "web",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.4"
|
||||
},
|
||||
{
|
||||
"name": "win32",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/win32-5.10.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.5"
|
||||
},
|
||||
{
|
||||
"name": "win32_registry",
|
||||
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/win32_registry-1.1.5",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "3.4"
|
||||
},
|
||||
|
@ -518,7 +596,7 @@
|
|||
"languageVersion": "3.4"
|
||||
}
|
||||
],
|
||||
"generated": "2025-03-29T09:11:46.461455Z",
|
||||
"generated": "2025-03-31T15:19:30.948302Z",
|
||||
"generator": "pub",
|
||||
"generatorVersion": "3.5.0",
|
||||
"flutterRoot": "file:///D:/Flutter/flutter_sdk/flutter_3.24.0",
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
_flutterfire_internals
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/_flutterfire_internals-1.3.53/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/_flutterfire_internals-1.3.53/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/_flutterfire_internals-1.3.54/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/_flutterfire_internals-1.3.54/lib/
|
||||
args
|
||||
3.3
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.6.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.6.0/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.7.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.7.0/lib/
|
||||
async
|
||||
2.18
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0/
|
||||
|
@ -36,20 +36,24 @@ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/clock-1.1.1/
|
|||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/clock-1.1.1/lib/
|
||||
cloud_firestore
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.4/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.4/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.6/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.6/lib/
|
||||
cloud_firestore_platform_interface
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_platform_interface-6.6.4/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_platform_interface-6.6.4/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_platform_interface-6.6.6/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_platform_interface-6.6.6/lib/
|
||||
cloud_firestore_web
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.4/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.4/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.6/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.6/lib/
|
||||
collection
|
||||
2.18
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/collection-1.18.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/collection-1.18.0/lib/
|
||||
cross_file
|
||||
3.3
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cross_file-0.3.4+2/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cross_file-0.3.4+2/lib/
|
||||
crypto
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/crypto-3.0.6/
|
||||
|
@ -58,6 +62,14 @@ cupertino_icons
|
|||
3.1
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cupertino_icons-1.0.8/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/cupertino_icons-1.0.8/lib/
|
||||
device_info_plus
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus-11.3.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus-11.3.0/lib/
|
||||
device_info_plus_platform_interface
|
||||
2.18
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus_platform_interface-7.0.2/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus_platform_interface-7.0.2/lib/
|
||||
dotted_dashed_line
|
||||
2.17
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/dotted_dashed_line-0.0.3/
|
||||
|
@ -78,46 +90,54 @@ file
|
|||
3.0
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/file-7.0.1/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/file-7.0.1/lib/
|
||||
file_picker
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/file_picker-10.0.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/file_picker-10.0.0/lib/
|
||||
firebase_auth
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.1/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.1/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.2/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.2/lib/
|
||||
firebase_auth_platform_interface
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_platform_interface-7.6.1/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_platform_interface-7.6.1/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_platform_interface-7.6.2/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_platform_interface-7.6.2/lib/
|
||||
firebase_auth_web
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.1/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.1/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.2/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.2/lib/
|
||||
firebase_core
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.12.1/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.12.1/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.13.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.13.0/lib/
|
||||
firebase_core_platform_interface
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_platform_interface-5.4.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_platform_interface-5.4.0/lib/
|
||||
firebase_core_web
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.21.1/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.21.1/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.22.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.22.0/lib/
|
||||
firebase_storage
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage-12.4.4/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage-12.4.4/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage-12.4.5/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage-12.4.5/lib/
|
||||
firebase_storage_platform_interface
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_platform_interface-5.2.4/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_platform_interface-5.2.4/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_platform_interface-5.2.5/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_platform_interface-5.2.5/lib/
|
||||
firebase_storage_web
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_web-3.10.11/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_web-3.10.11/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_web-3.10.12/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_web-3.10.12/lib/
|
||||
flutter_picker
|
||||
2.12
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_picker-2.1.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_picker-2.1.0/lib/
|
||||
flutter_plugin_android_lifecycle
|
||||
3.5
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.26/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.26/lib/
|
||||
flutter_screenutil
|
||||
2.17
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_screenutil-5.9.3/
|
||||
|
@ -132,8 +152,8 @@ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_switch-0.3.
|
|||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_switch-0.3.2/lib/
|
||||
get
|
||||
2.15
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.7.2/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.7.2/lib/
|
||||
google_fonts
|
||||
2.14
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/google_fonts-6.2.1/
|
||||
|
@ -210,6 +230,30 @@ path_provider_windows
|
|||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_windows-2.3.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_windows-2.3.0/lib/
|
||||
permission_handler
|
||||
3.5
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler-11.4.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler-11.4.0/lib/
|
||||
permission_handler_android
|
||||
3.5
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_android-12.1.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_android-12.1.0/lib/
|
||||
permission_handler_apple
|
||||
2.15
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_apple-9.4.6/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_apple-9.4.6/lib/
|
||||
permission_handler_html
|
||||
3.3
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_html-0.1.3+5/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_html-0.1.3+5/lib/
|
||||
permission_handler_platform_interface
|
||||
3.5
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_platform_interface-4.3.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_platform_interface-4.3.0/lib/
|
||||
permission_handler_windows
|
||||
2.12
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_windows-0.2.1/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_windows-0.2.1/lib/
|
||||
petitparser
|
||||
3.2
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/petitparser-6.0.2/
|
||||
|
@ -228,12 +272,12 @@ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/qr-3.0.2/
|
|||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/qr-3.0.2/lib/
|
||||
shared_preferences
|
||||
3.5
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.2/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.2/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.3/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.3/lib/
|
||||
shared_preferences_android
|
||||
3.5
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.6/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.6/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.7/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.7/lib/
|
||||
shared_preferences_foundation
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/
|
||||
|
@ -308,8 +352,16 @@ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vm_service-14.2.4/
|
|||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vm_service-14.2.4/lib/
|
||||
web
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/lib/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.1/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.1/lib/
|
||||
win32
|
||||
3.5
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/win32-5.10.1/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/win32-5.10.1/lib/
|
||||
win32_registry
|
||||
3.4
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/win32_registry-1.1.5/
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/win32_registry-1.1.5/lib/
|
||||
xdg_directories
|
||||
3.3
|
||||
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/xdg_directories-1.1.0/
|
||||
|
|
|
@ -25,7 +25,7 @@ if (flutterVersionName == null) {
|
|||
|
||||
android {
|
||||
namespace = "com.example.e_porter"
|
||||
compileSdk = flutter.compileSdkVersion
|
||||
compileSdk = 35 // flutter.compileSdkVersion
|
||||
ndkVersion = "25.1.8937393"
|
||||
|
||||
compileOptions {
|
||||
|
|
|
@ -1,4 +1,17 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<!-- Permissions -->
|
||||
<!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="29" />
|
||||
<uses-permission
|
||||
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="34" /> -->
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
||||
|
||||
<application
|
||||
android:label="e_porter"
|
||||
android:name="${applicationName}"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 5C8.86 5 6.27598 7.425 6.02148 10.5H5.75C3.4065 10.5 1.5 12.4065 1.5 14.75C1.5 17.0935 3.4065 19 5.75 19H10.25V17.5H5.75C4.2335 17.5 3 16.2665 3 14.75C3 13.2335 4.2335 12 5.75 12H6.75C7.1645 12 7.5 11.6645 7.5 11.25V11C7.5 8.519 9.519 6.5 12 6.5C14.481 6.5 16.5 8.519 16.5 11V11.25C16.5 11.6645 16.8355 12 17.25 12H18.25C19.7665 12 21 13.2335 21 14.75C21 16.2665 19.7665 17.5 18.25 17.5H13.75V19H18.25C20.5935 19 22.5 17.0935 22.5 14.75C22.5 12.4065 20.5935 10.5 18.25 10.5H17.9785C17.724 7.425 15.14 5 12 5ZM11.9883 11.9893C11.8742 11.9911 11.762 12.019 11.6603 12.0708C11.5586 12.1226 11.47 12.1969 11.4014 12.2881L9.21973 14.4697C9.14775 14.5388 9.09028 14.6216 9.0507 14.7132C9.01111 14.8048 8.99019 14.9034 8.98918 15.0032C8.98817 15.1029 9.00707 15.2019 9.04479 15.2943C9.08251 15.3867 9.13828 15.4706 9.20883 15.5412C9.27939 15.6117 9.36332 15.6675 9.4557 15.7052C9.54808 15.7429 9.64706 15.7618 9.74684 15.7608C9.84662 15.7598 9.9452 15.7389 10.0368 15.6993C10.1284 15.6597 10.2112 15.6023 10.2803 15.5303L11.25 14.5605V20.25C11.2486 20.3494 11.267 20.4481 11.304 20.5403C11.3411 20.6325 11.3961 20.7164 11.4659 20.7872C11.5357 20.858 11.6188 20.9142 11.7105 20.9526C11.8022 20.9909 11.9006 21.0107 12 21.0107C12.0994 21.0107 12.1978 20.9909 12.2895 20.9526C12.3812 20.9142 12.4643 20.858 12.5341 20.7872C12.6039 20.7164 12.6589 20.6325 12.696 20.5403C12.733 20.4481 12.7514 20.3494 12.75 20.25V14.5605L13.7197 15.5303C13.7888 15.6023 13.8716 15.6597 13.9632 15.6993C14.0548 15.7389 14.1534 15.7598 14.2532 15.7608C14.3529 15.7618 14.4519 15.7429 14.5443 15.7052C14.6367 15.6675 14.7206 15.6117 14.7912 15.5412C14.8617 15.4706 14.9175 15.3867 14.9552 15.2943C14.9929 15.2019 15.0118 15.1029 15.0108 15.0032C15.0098 14.9034 14.9889 14.8048 14.9493 14.7132C14.9097 14.6216 14.8523 14.5388 14.7803 14.4697L12.5947 12.2842C12.5237 12.1911 12.4318 12.1159 12.3265 12.0647C12.2212 12.0135 12.1054 11.9877 11.9883 11.9893Z" fill="#004B87"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
|
@ -51,6 +51,7 @@ class CustomeIcons {
|
|||
static SvgPicture AddUserFemaleOutline({double? size, Color? color}) => getIcon('ic_add_user_female', color: color);
|
||||
static SvgPicture LogoutOutline({double? size, Color? color}) => getIcon('ic_logout', color: color);
|
||||
static SvgPicture RemoveOutline({double? size, Color? color}) => getIcon('ic_remove', color: color);
|
||||
static SvgPicture UploadOutline({double? size, Color? color}) => getIcon('ic_upload', color: color);
|
||||
|
||||
static SvgPicture FlightSeatFilled({double? size, Color? color}) => getIcon('ic_flight_seat_filled', color: color);
|
||||
static SvgPicture PlaneRightFilled({double? size, Color? color}) => getIcon('ic_plane_filled', color: color);
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:device_info_plus/device_info_plus.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
|
||||
class PermissionHelper {
|
||||
static Future<bool> requestStoragePermission() async {
|
||||
try {
|
||||
PermissionStatus status;
|
||||
|
||||
if (Platform.isAndroid) {
|
||||
final androidInfo = await DeviceInfoPlugin().androidInfo;
|
||||
|
||||
if (androidInfo.version.sdkInt >= 30) {
|
||||
status = await Permission.manageExternalStorage.status;
|
||||
if (status.isDenied || status.isRestricted || status.isLimited) {
|
||||
status = await Permission.manageExternalStorage.request();
|
||||
}
|
||||
} else {
|
||||
status = await Permission.storage.status;
|
||||
if (status.isDenied || status.isRestricted || status.isLimited) {
|
||||
status = await Permission.storage.request();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
status = await Permission.storage.status;
|
||||
if (status.isDenied || status.isRestricted || status.isLimited) {
|
||||
status = await Permission.storage.request();
|
||||
}
|
||||
}
|
||||
|
||||
log('Final storage permission status: $status');
|
||||
|
||||
if (status.isGranted) {
|
||||
return true; // Permission granted
|
||||
} else if (status.isPermanentlyDenied) {
|
||||
Get.snackbar(
|
||||
'Permission Denied',
|
||||
'Storage permission is required to download files. Please enable it in the settings.',
|
||||
mainButton: TextButton(
|
||||
onPressed: () async {
|
||||
bool opened = await openAppSettings();
|
||||
if (!opened) {
|
||||
Get.snackbar(
|
||||
'Settings Unavailable',
|
||||
'Could not open settings. Please enable the permission manually.',
|
||||
snackPosition: SnackPosition.TOP,
|
||||
);
|
||||
}
|
||||
},
|
||||
child: Text('Open Settings'),
|
||||
),
|
||||
snackPosition: SnackPosition.TOP,
|
||||
);
|
||||
} else {
|
||||
Get.snackbar(
|
||||
'Permission Denied',
|
||||
'Storage permission is required to download files.',
|
||||
snackPosition: SnackPosition.TOP,
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
log('Error checking permissions: $e');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
class UploadFileModel {
|
||||
final String fileName;
|
||||
final String filePath;
|
||||
final int fileSize;
|
||||
double progress;
|
||||
String remainingTime;
|
||||
FileUploadStatus status;
|
||||
|
||||
UploadFileModel({
|
||||
required this.fileName,
|
||||
required this.filePath,
|
||||
required this.fileSize,
|
||||
required this.progress,
|
||||
required this.remainingTime,
|
||||
required this.status,
|
||||
});
|
||||
}
|
||||
|
||||
// Status enum for file upload
|
||||
enum FileUploadStatus {
|
||||
pending,
|
||||
uploading,
|
||||
completed,
|
||||
failed,
|
||||
}
|
|
@ -6,9 +6,14 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
|
||||
|
||||
import 'package:intl/intl.dart';
|
||||
import '../../../../_core/component/button/button_fill.dart';
|
||||
import '../../../../_core/service/logger_service.dart';
|
||||
import '../../../../domain/models/porter_service_model.dart';
|
||||
import '../../../../domain/models/ticket_model.dart';
|
||||
import '../../../../domain/models/user_entity.dart';
|
||||
import '../../../controllers/ticket_controller.dart';
|
||||
import '../../routes/app_rountes.dart';
|
||||
|
||||
class PaymentScreen extends StatefulWidget {
|
||||
const PaymentScreen({super.key});
|
||||
|
@ -18,6 +23,55 @@ class PaymentScreen extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _PaymentScreenState extends State<PaymentScreen> {
|
||||
late final String ticketId;
|
||||
late final String flightId;
|
||||
late String? ticketDate;
|
||||
late final int passenger;
|
||||
late final List<PassengerModel?> selectedPassengers;
|
||||
late List<String> numberSeat;
|
||||
late List<String> selectedServiceLabels;
|
||||
late Map<String, PorterServiceModel?> selectedPorterServices;
|
||||
late double totalPrice;
|
||||
late double grandTotal;
|
||||
late double totalAll;
|
||||
late String expiryTime;
|
||||
|
||||
final TicketController ticketController = Get.find<TicketController>();
|
||||
FlightModel? flightData;
|
||||
String? departureTime;
|
||||
String? arrivalTime;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
final args = Get.arguments as Map<String, dynamic>;
|
||||
ticketId = args['ticketId'] ?? '';
|
||||
flightId = args['flightId'] ?? '';
|
||||
ticketDate = args['date'];
|
||||
passenger = args['passenger'] ?? 0;
|
||||
selectedPassengers = args['selectedPassenger'] ?? [];
|
||||
numberSeat = args['numberSeat'] ?? '';
|
||||
totalPrice = args['totalPrice'] ?? 0.0;
|
||||
grandTotal = args['grandTotal'] ?? 0.0;
|
||||
totalAll = args['totalAll'] ?? 0.0;
|
||||
selectedServiceLabels = args['selectedServiceLabels'] ?? [];
|
||||
selectedPorterServices = args['selectedPorterServices'] ?? {};
|
||||
expiryTime = args['expiryTime'] ?? '';
|
||||
|
||||
fetchDataFlight();
|
||||
}
|
||||
|
||||
Future<void> fetchDataFlight() async {
|
||||
try {
|
||||
FlightModel flight = await ticketController.getFlightById(ticketId: ticketId, flightId: flightId);
|
||||
setState(() {
|
||||
flightData = flight;
|
||||
});
|
||||
} catch (e) {
|
||||
logger.e('Terjadi kesalahan: $e');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
|
@ -42,14 +96,21 @@ class _PaymentScreenState extends State<PaymentScreen> {
|
|||
children: [
|
||||
TypographyStyles.h5("E-Porter", color: GrayColors.gray800),
|
||||
SizedBox(height: 10.h),
|
||||
TypographyStyles.body("Citilink (103)", color: GrayColors.gray800, fontWeight: FontWeight.w400),
|
||||
TypographyStyles.body(
|
||||
"${flightData?.airLines} (${flightData?.code})",
|
||||
color: GrayColors.gray800,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
SizedBox(height: 16.h),
|
||||
TypographyStyles.h5("Rp 2.460.000", color: GrayColors.gray800),
|
||||
TypographyStyles.h5(
|
||||
"Rp ${NumberFormat.decimalPattern('id_ID').format(totalAll)}",
|
||||
color: GrayColors.gray800,
|
||||
),
|
||||
SizedBox(height: 32.h),
|
||||
SvgPicture.asset('assets/images/qris.svg'),
|
||||
SizedBox(height: 20.h),
|
||||
TypographyStyles.small(
|
||||
"Berlaku hingga : 28 Januari 2025, 16:40",
|
||||
"Berlaku hingga : $expiryTime",
|
||||
color: GrayColors.gray600,
|
||||
fontWeight: FontWeight.w400,
|
||||
)
|
||||
|
@ -60,16 +121,14 @@ class _PaymentScreenState extends State<PaymentScreen> {
|
|||
),
|
||||
),
|
||||
bottomNavigationBar: CustomeShadowCotainner(
|
||||
child: ZoomTapAnimation(
|
||||
child: ButtonFill(
|
||||
text: 'Lanjutkan',
|
||||
textColor: Colors.white,
|
||||
onTap: () {
|
||||
// Get.toNamed(Routes.TICKETBOOKINGSTEP2);
|
||||
Get.toNamed(Routes.UPLOADFILE);
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import 'dart:developer';
|
||||
|
||||
import 'package:e_porter/_core/component/card/custome_shadow_cotainner.dart';
|
||||
import 'package:e_porter/_core/constants/colors.dart';
|
||||
import 'package:e_porter/_core/constants/typography.dart';
|
||||
|
@ -217,6 +219,10 @@ class _TicketBookingStep4ScreenState extends State<TicketBookingStep4Screen> {
|
|||
labelButton: "Buat Pesanan",
|
||||
iconButton: CustomeIcons.ProtectOutline(color: Colors.white),
|
||||
onTap: () {
|
||||
final DateTime currentTime = DateTime.now();
|
||||
final DateTime expiryTime = currentTime.add(Duration(hours: 1));
|
||||
final String formattedExpiryTime =
|
||||
"${DateFormat('dd MMMM yyyy', 'en_US').format(expiryTime)}, ${DateFormat.Hm().format(expiryTime)}";
|
||||
final argument = {
|
||||
'ticketId': ticketId,
|
||||
'flightId': flightId,
|
||||
|
@ -228,6 +234,8 @@ class _TicketBookingStep4ScreenState extends State<TicketBookingStep4Screen> {
|
|||
'grandTotal': grandTotal,
|
||||
'selectedServiceLabels': selectedServiceLabels,
|
||||
'selectedPorterServices': selectedPorterServices,
|
||||
'totalAll': totalAll(),
|
||||
'expiryTime': formattedExpiryTime,
|
||||
};
|
||||
Get.toNamed(Routes.PAYMENT, arguments: argument);
|
||||
},
|
||||
|
@ -293,7 +301,7 @@ class _TicketBookingStep4ScreenState extends State<TicketBookingStep4Screen> {
|
|||
width: 40.w,
|
||||
height: 26.h,
|
||||
errorBuilder: (context, error, stackTrace) {
|
||||
print("Error loading image: $error");
|
||||
log("Error loading image: $error");
|
||||
return Container(
|
||||
width: 40.w,
|
||||
height: 10.h,
|
||||
|
|
|
@ -0,0 +1,379 @@
|
|||
import 'package:e_porter/_core/constants/colors.dart';
|
||||
import 'package:e_porter/_core/constants/typography.dart';
|
||||
import 'package:e_porter/_core/service/permission_service.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
|
||||
|
||||
import '../../../../_core/component/appbar/appbar_component.dart';
|
||||
import '../../../../_core/component/button/button_fill.dart';
|
||||
import '../../../../_core/component/card/custome_shadow_cotainner.dart';
|
||||
import '../../../../domain/models/upload_file_model.dart';
|
||||
|
||||
class UploadFileScreen extends StatefulWidget {
|
||||
const UploadFileScreen({super.key});
|
||||
|
||||
@override
|
||||
State<UploadFileScreen> createState() => _UploadFileScreenState();
|
||||
}
|
||||
|
||||
class _UploadFileScreenState extends State<UploadFileScreen> {
|
||||
final List<UploadFileModel> uploadedFiles = [];
|
||||
bool isUploading = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: GrayColors.gray50,
|
||||
appBar: DefaultAppbarComponent(
|
||||
title: 'Upload Bukti Pembayaran',
|
||||
textColor: Colors.white,
|
||||
backgroundColors: PrimaryColors.primary800,
|
||||
onTab: () {
|
||||
Get.back();
|
||||
},
|
||||
),
|
||||
body: SafeArea(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
|
||||
decoration: BoxDecoration(
|
||||
color: PrimaryColors.primary50,
|
||||
borderRadius: BorderRadius.circular(10.r),
|
||||
border: Border.all(width: 1.w, color: PrimaryColors.primary800),
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
SvgPicture.asset('assets/icons/ic_upload.svg', width: 32.w, height: 32.h),
|
||||
SizedBox(height: 8.h),
|
||||
TypographyStyles.body('Upload Bukti Pembayaran disini', color: GrayColors.gray800),
|
||||
SizedBox(height: 16.h),
|
||||
ZoomTapAnimation(
|
||||
child: GestureDetector(
|
||||
onTap: () => _pickFile(),
|
||||
child: Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 10.h),
|
||||
decoration: BoxDecoration(
|
||||
color: GrayColors.gray300,
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
),
|
||||
child: TypographyStyles.caption('Pilih File', color: GrayColors.gray800),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10.h),
|
||||
TypographyStyles.small(
|
||||
'Silahkan upload bukti pembayaran anda disini',
|
||||
color: GrayColors.gray500,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
SizedBox(height: 32.h),
|
||||
TypographyStyles.body('Upload File', color: GrayColors.gray800),
|
||||
SizedBox(height: 16.h),
|
||||
Column(
|
||||
children: uploadedFiles.isEmpty
|
||||
? [_buildEmptyState()]
|
||||
: uploadedFiles.map((file) => _buildFileItem(file)).toList(),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
bottomNavigationBar: CustomeShadowCotainner(
|
||||
child: ButtonFill(
|
||||
text: 'Upload',
|
||||
textColor: Colors.white,
|
||||
onTap: () {
|
||||
if (uploadedFiles.isNotEmpty) {
|
||||
_submitFiles();
|
||||
} else {
|
||||
Get.snackbar(
|
||||
'Peringatan',
|
||||
'Silahkan pilih file terlebih dahulu',
|
||||
backgroundColor: Colors.red,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildEmptyState() {
|
||||
return Container(
|
||||
height: 100.h,
|
||||
width: double.infinity,
|
||||
alignment: Alignment.center,
|
||||
child: TypographyStyles.caption(
|
||||
'Belum ada file yang dipilih',
|
||||
color: GrayColors.gray500,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildFileItem(UploadFileModel file) {
|
||||
IconData fileIcon;
|
||||
|
||||
if (file.fileName.toLowerCase().endsWith('.zip')) {
|
||||
fileIcon = Icons.folder_zip_outlined;
|
||||
} else if (file.fileName.toLowerCase().endsWith('.jpg') ||
|
||||
file.fileName.toLowerCase().endsWith('.jpeg') ||
|
||||
file.fileName.toLowerCase().endsWith('.png')) {
|
||||
fileIcon = Icons.image_outlined;
|
||||
} else if (file.fileName.toLowerCase().endsWith('.mp4') || file.fileName.toLowerCase().endsWith('.mov')) {
|
||||
fileIcon = Icons.video_file_outlined;
|
||||
} else {
|
||||
fileIcon = Icons.insert_drive_file_outlined;
|
||||
}
|
||||
|
||||
return Container(
|
||||
margin: EdgeInsets.only(bottom: 12.h),
|
||||
padding: EdgeInsets.all(12.r),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black.withOpacity(0.05),
|
||||
blurRadius: 4.r,
|
||||
offset: Offset(0, 2),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Icon(fileIcon, size: 24.r, color: GrayColors.gray700),
|
||||
SizedBox(width: 12.w),
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
TypographyStyles.small(file.fileName, color: GrayColors.gray800, fontWeight: FontWeight.w500),
|
||||
SizedBox(height: 4.h),
|
||||
Row(
|
||||
children: [
|
||||
TypographyStyles.caption(
|
||||
'${(file.fileSize / (1024 * 1024)).toStringAsFixed(1)} mb',
|
||||
color: file.status == FileUploadStatus.failed ? Colors.red : GrayColors.gray600,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
if (file.status == FileUploadStatus.uploading)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 8.w),
|
||||
child: TypographyStyles.caption(
|
||||
'| ${file.progress}% - ${file.remainingTime} sec left',
|
||||
color: GrayColors.gray600,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
if (file.status == FileUploadStatus.failed)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 8.w),
|
||||
child: TypographyStyles.caption(
|
||||
'Upload failed',
|
||||
color: Colors.red,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
if (file.status == FileUploadStatus.failed)
|
||||
IconButton(
|
||||
icon: Icon(Icons.refresh, size: 20.r, color: GrayColors.gray600),
|
||||
onPressed: () => _retryUpload(file),
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(Icons.delete_outline, size: 20.r, color: GrayColors.gray600),
|
||||
onPressed: () => _removeFile(file),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
if (file.status == FileUploadStatus.uploading) ...[
|
||||
SizedBox(height: 8.h),
|
||||
LinearProgressIndicator(
|
||||
value: file.progress / 100,
|
||||
backgroundColor: GrayColors.gray200,
|
||||
valueColor: AlwaysStoppedAnimation<Color>(PrimaryColors.primary600),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _pickFile() async {
|
||||
bool permissionGranted = await PermissionHelper.requestStoragePermission();
|
||||
if (!permissionGranted) {
|
||||
Get.snackbar(
|
||||
'Permission Denied',
|
||||
'Storage permission is required to select files.',
|
||||
backgroundColor: Colors.red,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
FilePickerResult? result = await FilePicker.platform.pickFiles(
|
||||
type: FileType.custom,
|
||||
allowedExtensions: ['jpg', 'jpeg', 'png', 'pdf', 'zip', 'mp4'],
|
||||
);
|
||||
|
||||
if (result != null) {
|
||||
final file = result.files.first;
|
||||
final newFile = UploadFileModel(
|
||||
fileName: file.name,
|
||||
filePath: file.path!,
|
||||
fileSize: file.size,
|
||||
progress: 0,
|
||||
remainingTime: '0',
|
||||
status: FileUploadStatus.pending,
|
||||
);
|
||||
|
||||
setState(() {
|
||||
uploadedFiles.add(newFile);
|
||||
});
|
||||
|
||||
// Simulasikan proses loading lokal
|
||||
_simulateLocalLoading(newFile);
|
||||
}
|
||||
} catch (e) {
|
||||
print('Error picking file: $e');
|
||||
Get.snackbar(
|
||||
'Error',
|
||||
'Terjadi kesalahan saat memilih file',
|
||||
backgroundColor: Colors.red,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void _simulateLocalLoading(UploadFileModel file) {
|
||||
setState(() {
|
||||
file.status = FileUploadStatus.uploading;
|
||||
});
|
||||
|
||||
// Simulate progressing upload - in a real app this would be actual file reading/processing
|
||||
int progress = 0;
|
||||
Future.doWhile(() async {
|
||||
if (progress >= 100) return false;
|
||||
|
||||
await Future.delayed(Duration(milliseconds: 100));
|
||||
progress += 5;
|
||||
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
file.progress = progress.toDouble();
|
||||
file.remainingTime = ((100 - progress) ~/ 10).toString();
|
||||
});
|
||||
}
|
||||
|
||||
return progress < 100 && file.status == FileUploadStatus.uploading;
|
||||
}).then((_) {
|
||||
if (mounted && file.status == FileUploadStatus.uploading) {
|
||||
setState(() {
|
||||
// Simulate some files failing to upload for demonstration
|
||||
if (file.fileName.contains('Icon-Set')) {
|
||||
file.status = FileUploadStatus.failed;
|
||||
} else {
|
||||
file.status = FileUploadStatus.completed;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void _retryUpload(UploadFileModel file) {
|
||||
setState(() {
|
||||
file.progress = 0;
|
||||
file.remainingTime = '0';
|
||||
});
|
||||
_simulateLocalLoading(file);
|
||||
}
|
||||
|
||||
void _removeFile(UploadFileModel file) {
|
||||
setState(() {
|
||||
uploadedFiles.remove(file);
|
||||
});
|
||||
}
|
||||
|
||||
void _submitFiles() {
|
||||
// Check if all files are uploaded successfully
|
||||
bool allCompleted = uploadedFiles.every((file) => file.status == FileUploadStatus.completed);
|
||||
|
||||
if (!allCompleted) {
|
||||
Get.dialog(
|
||||
AlertDialog(
|
||||
title: Text('Peringatan'),
|
||||
content: Text('Beberapa file belum selesai diupload. Apakah Anda ingin melanjutkan?'),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => Get.back(),
|
||||
child: Text('Batal'),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
_uploadToServer();
|
||||
},
|
||||
child: Text('Lanjutkan'),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
} else {
|
||||
_uploadToServer();
|
||||
}
|
||||
}
|
||||
|
||||
void _uploadToServer() {
|
||||
// Simulate uploading to server
|
||||
Get.snackbar(
|
||||
'Info',
|
||||
'Mengupload bukti pembayaran...',
|
||||
backgroundColor: PrimaryColors.primary600,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
|
||||
// Here you would actually send the files to your server
|
||||
// For now, let's just simulate a successful upload
|
||||
Future.delayed(Duration(seconds: 2), () {
|
||||
Get.snackbar(
|
||||
'Sukses',
|
||||
'Bukti pembayaran berhasil diupload',
|
||||
backgroundColor: Colors.green,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
|
||||
// Navigate back or to a success screen
|
||||
Future.delayed(Duration(seconds: 1), () {
|
||||
// Get.offNamed(Routes.SUCCESS_SCREEN);
|
||||
Get.back();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
|
@ -22,6 +22,7 @@ import 'package:e_porter/presentation/screens/home/pages/ticket_booking_step1_sc
|
|||
import 'package:e_porter/presentation/screens/home/pages/ticket_booking_step2_screen.dart';
|
||||
import 'package:e_porter/presentation/screens/home/pages/ticket_booking_step3_screen.dart';
|
||||
import 'package:e_porter/presentation/screens/home/pages/ticket_booking_step4_screen.dart';
|
||||
import 'package:e_porter/presentation/screens/home/pages/upload_file_screen.dart';
|
||||
import 'package:e_porter/presentation/screens/navigation/main_navigation.dart';
|
||||
import 'package:e_porter/presentation/screens/onboarding/onboarding_screen.dart';
|
||||
import 'package:e_porter/presentation/screens/profile/pages/profile_screen.dart';
|
||||
|
@ -120,6 +121,10 @@ class AppRoutes {
|
|||
name: Routes.PAYMENT,
|
||||
page: () => PaymentScreen(),
|
||||
),
|
||||
GetPage(
|
||||
name: Routes.UPLOADFILE,
|
||||
page: () => UploadFileScreen(),
|
||||
),
|
||||
GetPage(
|
||||
name: Routes.TRANSACTIONHISTORY,
|
||||
page: () => transactionHistory(),
|
||||
|
@ -161,6 +166,7 @@ class Routes {
|
|||
static const TICKETBOOKINGSTEP4 = '/ticket_booking_step4';
|
||||
static const CHOOSECHAIR = '/choose_chair';
|
||||
static const PAYMENT = '/payment';
|
||||
static const UPLOADFILE = '/upload_file';
|
||||
static const TRANSACTIONHISTORY = '/transaction_history';
|
||||
static const DETAILTICKET = '/detail_ticket';
|
||||
static const PRINTBOARDINGPASS = '/print_boarding_pass';
|
||||
|
|
|
@ -6,6 +6,8 @@ import FlutterMacOS
|
|||
import Foundation
|
||||
|
||||
import cloud_firestore
|
||||
import device_info_plus
|
||||
import file_picker
|
||||
import firebase_auth
|
||||
import firebase_core
|
||||
import firebase_storage
|
||||
|
@ -14,6 +16,8 @@ import shared_preferences_foundation
|
|||
|
||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin"))
|
||||
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
|
||||
FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin"))
|
||||
FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin"))
|
||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||
FLTFirebaseStoragePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseStoragePlugin"))
|
||||
|
|
174
pubspec.lock
174
pubspec.lock
|
@ -5,18 +5,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: _flutterfire_internals
|
||||
sha256: "7fd72d77a7487c26faab1d274af23fb008763ddc10800261abbfb2c067f183d5"
|
||||
sha256: de9ecbb3ddafd446095f7e833c853aff2fa1682b017921fe63a833f9d6f0e422
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.53"
|
||||
version: "1.3.54"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: args
|
||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
||||
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.0"
|
||||
version: "2.7.0"
|
||||
async:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -77,26 +77,26 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: cloud_firestore
|
||||
sha256: "8dfe49146560af035314477995bdfb4a7104f33cb7f881748572fbda38ecfa55"
|
||||
sha256: "89a5e32716794b6a8d0ec1b5dfda988194e92daedaa3f3bed66fa0d0a595252e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.6.4"
|
||||
version: "5.6.6"
|
||||
cloud_firestore_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cloud_firestore_platform_interface
|
||||
sha256: dc0bcc3239a4feaa4b7b184dc4b689bc97e6cea1a8320ee0d7ee64b3607858ea
|
||||
sha256: "9f012844eb59be6827ed97415875c5a29ccacd28bc79bf85b4680738251a33df"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.6.4"
|
||||
version: "6.6.6"
|
||||
cloud_firestore_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cloud_firestore_web
|
||||
sha256: "5091ed6771c886c9a93b1ec1ffa61770056210f1a3312095a73a5a4bab0c6a9f"
|
||||
sha256: b8b754269be0e907acd9ff63ad60f66b84c78d330ca1d7e474f86c9527ddc803
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.4.4"
|
||||
version: "4.4.6"
|
||||
collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -105,6 +105,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.18.0"
|
||||
cross_file:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cross_file
|
||||
sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.4+2"
|
||||
crypto:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -121,6 +129,22 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.8"
|
||||
device_info_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: device_info_plus
|
||||
sha256: "72d146c6d7098689ff5c5f66bcf593ac11efc530095385356e131070333e64da"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.3.0"
|
||||
device_info_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: device_info_plus_platform_interface
|
||||
sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.2"
|
||||
dotted_dashed_line:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -161,38 +185,46 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.1"
|
||||
file_picker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: file_picker
|
||||
sha256: "36a1652d99cb6bf8ccc8b9f43aded1fd60b234d23ce78af422c07f950a436ef7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.0"
|
||||
firebase_auth:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_auth
|
||||
sha256: "91587615d7d9165c65a030426e3cf40bbec37c486f52ff654af17aba5be3d208"
|
||||
sha256: "54c62b2d187709114dd09ce658a8803ee91f9119b0e0d3fc2245130ad9bff9ad"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.5.1"
|
||||
version: "5.5.2"
|
||||
firebase_auth_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_auth_platform_interface
|
||||
sha256: "1dcf1dbdd90fe97fa37ab3631b561bf584adb88f6be0b0dd915fff799ad53192"
|
||||
sha256: "5402d13f4bb7f29f2fb819f3b6b5a5a56c9f714aef2276546d397e25ac1b6b8e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.6.1"
|
||||
version: "7.6.2"
|
||||
firebase_auth_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_auth_web
|
||||
sha256: "3774cb13547e28b180fed2a5e696b4b36f97f4b1fadc7b04a0200e5009344d98"
|
||||
sha256: "2be496911f0807895d5fe8067b70b7d758142dd7fb26485cbe23e525e2547764"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.14.1"
|
||||
version: "5.14.2"
|
||||
firebase_core:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_core
|
||||
sha256: f4d8f49574a4e396f34567f3eec4d38ab9c3910818dec22ca42b2a467c685d8b
|
||||
sha256: "017d17d9915670e6117497e640b2859e0b868026ea36bf3a57feb28c3b97debe"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.12.1"
|
||||
version: "3.13.0"
|
||||
firebase_core_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -205,34 +237,34 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_web
|
||||
sha256: faa5a76f6380a9b90b53bc3bdcb85bc7926a382e0709b9b5edac9f7746651493
|
||||
sha256: "129a34d1e0fb62e2b488d988a1fc26cc15636357e50944ffee2862efe8929b23"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.21.1"
|
||||
version: "2.22.0"
|
||||
firebase_storage:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_storage
|
||||
sha256: "2274bb277d0d56d4a106fd89bad5e8f7c005bae77dc3df5abd36101957010840"
|
||||
sha256: b66435730252985c49aabe83e0490bcfab2e7b3f2192bf421ca596fa490de14a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "12.4.4"
|
||||
version: "12.4.5"
|
||||
firebase_storage_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_storage_platform_interface
|
||||
sha256: "36ed6ebc2453a500c6d1e63c8126459056a70a798d53636242b0325951814cf5"
|
||||
sha256: "08d32cae58200c34f504098d106952213f2e4c32db111ae7757a86887428ab81"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.2.4"
|
||||
version: "5.2.5"
|
||||
firebase_storage_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_storage_web
|
||||
sha256: e169fc825cbd91c70d73f75b7e8be9ada272b4297184f779ca124b42945828fe
|
||||
sha256: d6aee6867f8c369a88484367a8b1f0f6d0f022b4ff2622b51e32dfeef839f9d4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.10.11"
|
||||
version: "3.10.12"
|
||||
flutter:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
|
@ -246,6 +278,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: "1c2b787f99bdca1f3718543f81d38aa1b124817dfeb9fb196201bea85b6134bf"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.26"
|
||||
flutter_screenutil:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -284,10 +324,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: get
|
||||
sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e
|
||||
sha256: c79eeb4339f1f3deffd9ec912f8a923834bec55f7b49c9e882b8fef2c139d425
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.6.6"
|
||||
version: "4.7.2"
|
||||
google_fonts:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -377,7 +417,7 @@ packages:
|
|||
source: hosted
|
||||
version: "1.15.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: path
|
||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||
|
@ -440,6 +480,54 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
permission_handler:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.4.0"
|
||||
permission_handler_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_android
|
||||
sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "12.1.0"
|
||||
permission_handler_apple:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_apple
|
||||
sha256: f84a188e79a35c687c132a0a0556c254747a08561e99ab933f12f6ca71ef3c98
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.4.6"
|
||||
permission_handler_html:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_html
|
||||
sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.3+5"
|
||||
permission_handler_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_platform_interface
|
||||
sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.3.0"
|
||||
permission_handler_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_windows
|
||||
sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1"
|
||||
petitparser:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -476,18 +564,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: "846849e3e9b68f3ef4b60c60cf4b3e02e9321bc7f4d8c4692cf87ffa82fc8a3a"
|
||||
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.2"
|
||||
version: "2.5.3"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: a768fc8ede5f0c8e6150476e14f38e2417c0864ca36bb4582be8e21925a03c22
|
||||
sha256: "9f9f3d372d4304723e6136663bb291c0b93f5e4c8a4a6314347f481a33bda2b1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.6"
|
||||
version: "2.4.7"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -641,10 +729,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
||||
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
version: "1.1.1"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: daf97c9d80197ed7b619040e86c8ab9a9dad285e7671ee7390f9180cc828a51e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.10.1"
|
||||
win32_registry:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32_registry
|
||||
sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.5"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -53,6 +53,10 @@ dependencies:
|
|||
google_fonts: ^6.2.1
|
||||
dotted_dashed_line: ^0.0.3
|
||||
barcode_widget: ^2.0.4
|
||||
file_picker: ^10.0.0
|
||||
path: ^1.9.0
|
||||
permission_handler: ^11.4.0
|
||||
device_info_plus: ^11.3.0
|
||||
|
||||
# pin_code_fields: ^8.0.1
|
||||
# dio: ^5.8.0+1
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <firebase_auth/firebase_auth_plugin_c_api.h>
|
||||
#include <firebase_core/firebase_core_plugin_c_api.h>
|
||||
#include <firebase_storage/firebase_storage_plugin_c_api.h>
|
||||
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
CloudFirestorePluginCApiRegisterWithRegistrar(
|
||||
|
@ -20,4 +21,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
|||
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
|
||||
FirebaseStoragePluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FirebaseStoragePluginCApi"));
|
||||
PermissionHandlerWindowsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
|||
firebase_auth
|
||||
firebase_core
|
||||
firebase_storage
|
||||
permission_handler_windows
|
||||
)
|
||||
|
||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||
|
|
Loading…
Reference in New Issue