Compare commits
244 Commits
Developmen
...
bugs26aug
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb271e64c4 | ||
|
|
6eba901db1 | ||
|
|
333a8df39a | ||
|
|
ee8c37a4dc | ||
|
|
d39c4ad5d8 | ||
|
|
42069126a3 | ||
|
|
0efd230d10 | ||
|
|
4f9d5b9abf | ||
|
|
d0468bc718 | ||
|
|
32bce97bed | ||
|
|
f250c6d039 | ||
|
|
91de373f35 | ||
|
|
f81db0d848 | ||
|
|
1166d97dbc | ||
|
|
e5472c7414 | ||
|
|
ea458d58b2 | ||
|
|
01eec8a1c5 | ||
|
|
51f601d982 | ||
|
|
87428c51f1 | ||
|
|
ba2c222c70 | ||
|
|
65a87af3e3 | ||
|
|
bd9c8b9d0d | ||
|
|
ce25bd9de7 | ||
|
|
dff6fae483 | ||
|
|
0f3b80ce1d | ||
|
|
e62f92da75 | ||
|
|
bf81504b8b | ||
|
|
111bce4390 | ||
|
|
1dab461497 | ||
|
|
c53ddbc357 | ||
|
|
8b05256bad | ||
|
|
175d366c35 | ||
|
|
c2b9a0872a | ||
|
|
bde57c0bcc | ||
|
|
2c9ce5ea44 | ||
|
|
e84bd1b5da | ||
|
|
3c99a41234 | ||
|
|
8936ea2bcf | ||
|
|
208f000a26 | ||
|
|
4a923fb7a7 | ||
|
|
4e49d433af | ||
|
|
2ffa30de18 | ||
|
|
25a7e5f060 | ||
|
|
474a3c5e14 | ||
|
|
77b61d229a | ||
|
|
3977b3df53 | ||
|
|
0be6eda607 | ||
|
|
5c6e48e372 | ||
|
|
2d0ca49d1b | ||
|
|
c07af14fed | ||
|
|
13ea470b0d | ||
|
|
7e01ed10ef | ||
|
|
ef0c761b95 | ||
|
|
c52246f3b9 | ||
|
|
f161c8115c | ||
|
|
f3512a4f28 | ||
|
|
37f36f2e6b | ||
|
|
688d006382 | ||
|
|
3f0423edef | ||
|
|
d5baaa0e70 | ||
|
|
d297bcde84 | ||
|
|
049fd76734 | ||
|
|
9d98c57bbd | ||
|
|
6765f8db88 | ||
|
|
67486b2d2e | ||
|
|
e295051a6e | ||
|
|
533a908441 | ||
|
|
0d3b3b2fb0 | ||
|
|
ace7d84b29 | ||
|
|
34209c85d4 | ||
|
|
f402b65210 | ||
|
|
16d536307b | ||
|
|
73188fa3da | ||
|
|
e910046501 | ||
|
|
d365d73931 | ||
|
|
6108ab0d65 | ||
|
|
01a8e0d908 | ||
|
|
1128714847 | ||
|
|
fd48696453 | ||
|
|
1828337698 | ||
|
|
c3d9ea58bd | ||
|
|
3428ac17f7 | ||
|
|
f57bb8aecb | ||
|
|
8ec55f95e1 | ||
|
|
1a21624d72 | ||
|
|
3d68e0a4ed | ||
|
|
a84b1b72a5 | ||
|
|
07e48c9edd | ||
|
|
0ea40850e8 | ||
|
|
65725e0271 | ||
|
|
bbb7fafaf5 | ||
|
|
f19a19f19f | ||
|
|
dde275ecdc | ||
|
|
ea567d8670 | ||
|
|
39cbcb4845 | ||
|
|
c8a8a73070 | ||
|
|
8e076269e0 | ||
|
|
28423220c5 | ||
|
|
b97ee0c77c | ||
|
|
77e2d5abbb | ||
|
|
0fcbff1c52 | ||
|
|
0c3c1d1449 | ||
|
|
ea5c5d1b72 | ||
|
|
e176553b71 | ||
|
|
51d3aa44ec | ||
|
|
d6f70f34d0 | ||
|
|
ce2f658196 | ||
|
|
083a6a0ff3 | ||
|
|
a338f3f972 | ||
|
|
a1b2021b77 | ||
|
|
89e98279ac | ||
|
|
bda76db16f | ||
|
|
96269b8a36 | ||
|
|
ef5472cf64 | ||
|
|
f6cdfcd051 | ||
|
|
a94680b572 | ||
|
|
13d1b06449 | ||
|
|
1f41b5ab3a | ||
|
|
0a2ffa53df | ||
|
|
6aea13e959 | ||
|
|
f260eaaad0 | ||
|
|
c94a405623 | ||
|
|
255faca290 | ||
|
|
8f6682f969 | ||
|
|
b2f48c3ea8 | ||
|
|
bd9aedb5de | ||
|
|
81dc824c49 | ||
|
|
574b7c22b8 | ||
|
|
ff08056369 | ||
|
|
d9a21f280f | ||
|
|
5b47ae3105 | ||
|
|
7db4700353 | ||
|
|
3e5e8a472d | ||
|
|
27acf919db | ||
|
|
48a15229eb | ||
|
|
b81fcb6b75 | ||
|
|
3e30fd545a | ||
|
|
eda3416d4b | ||
|
|
9d436c2a74 | ||
|
|
c03cfe1dbc | ||
|
|
2863f827a6 | ||
|
|
63bcd725e8 | ||
|
|
044f216900 | ||
|
|
1a03b61b6f | ||
|
|
838142308d | ||
|
|
2a7c866639 | ||
|
|
b2b2b1d6eb | ||
|
|
18886dc6c0 | ||
|
|
0ce1719179 | ||
|
|
ac60eaecff | ||
|
|
857721abf9 | ||
|
|
a5e52eae4f | ||
|
|
01cb284b43 | ||
|
|
dad5d8d9cf | ||
|
|
93e07b3cc0 | ||
|
|
053048de06 | ||
|
|
dd47ae3508 | ||
|
|
a556d104c7 | ||
|
|
2b9755c4b9 | ||
|
|
716c2c219b | ||
|
|
b9c929c7f0 | ||
|
|
e77c766fa0 | ||
|
|
30f05268e5 | ||
|
|
1fd6475a9d | ||
|
|
8f045d0d22 | ||
|
|
5a08469415 | ||
|
|
67bd9b0a6a | ||
|
|
26e997447c | ||
|
|
2dcae88e7e | ||
|
|
00c9683f10 | ||
|
|
1f33ab55bc | ||
|
|
9bd0f3affc | ||
|
|
84239f52ba | ||
|
|
d9d04996b5 | ||
|
|
76c29fafcd | ||
|
|
55f2b4673a | ||
|
|
e62c3dc8c1 | ||
|
|
15a991687d | ||
|
|
b470d63819 | ||
|
|
5d16e5b8b8 | ||
|
|
3c4c2fce6c | ||
|
|
a58f91ba99 | ||
|
|
e0759e5df7 | ||
|
|
6ecc937d09 | ||
|
|
728d8676f7 | ||
|
|
8714ffeb6d | ||
|
|
5b92d23bcb | ||
|
|
97e3928963 | ||
|
|
f45aeebfd8 | ||
|
|
875fa240fb | ||
|
|
9eaf857dcf | ||
|
|
092e8b77ed | ||
|
|
0e21f2d37a | ||
|
|
295b74b6e2 | ||
|
|
4ee967cfd6 | ||
|
|
0b7d366d60 | ||
|
|
a93cb7214f | ||
|
|
143912fa1a | ||
|
|
4b0f264d53 | ||
|
|
02405fc097 | ||
|
|
b0040e84b8 | ||
|
|
190c72de1c | ||
|
|
00b2e87126 | ||
|
|
50102b9e7b | ||
|
|
166cf2e257 | ||
|
|
d5c4896fc4 | ||
|
|
39f4e6a6a3 | ||
|
|
d05c4fe467 | ||
|
|
174455ced9 | ||
|
|
57135da8ec | ||
|
|
59a5ca924b | ||
|
|
67df2a802d | ||
|
|
640be1823e | ||
|
|
5271dfe1cb | ||
|
|
9e86590e72 | ||
|
|
3f0514801e | ||
|
|
8365ca11bc | ||
|
|
4abc8103a2 | ||
|
|
089af9df2c | ||
|
|
8d99c7ea2b | ||
|
|
634b1a3bc4 | ||
|
|
725d2cb01d | ||
|
|
79105e3813 | ||
|
|
eeafd92625 | ||
|
|
435cdf0909 | ||
|
|
dcabb4966e | ||
|
|
c5b6a2e536 | ||
|
|
a67bcf9100 | ||
|
|
fc0a71d3c1 | ||
|
|
40ac2bef76 | ||
|
|
e9521c9315 | ||
|
|
417d3e6a63 | ||
|
|
562eec187e | ||
|
|
78c6999f94 | ||
|
|
b9d038b167 | ||
|
|
f46732290b | ||
|
|
abf668e14c | ||
|
|
43f4e2ddfc | ||
|
|
157ce0b4a9 | ||
|
|
4cebac15f6 | ||
|
|
03e2d5c817 | ||
|
|
d3618b1535 | ||
|
|
07f9168053 | ||
|
|
4a72a9c718 |
@@ -19,7 +19,9 @@
|
|||||||
android:label="ReGroup"
|
android:label="ReGroup"
|
||||||
android:requestLegacyExternalStorage="true"
|
android:requestLegacyExternalStorage="true"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
android:icon="@mipmap/ic_launcher">
|
android:icon="@mipmap/launcher_icon"
|
||||||
|
android:allowBackup="false"
|
||||||
|
android:fullBackupContent="false">
|
||||||
<activity
|
<activity
|
||||||
android:name="com.yalantis.ucrop.UCropActivity"
|
android:name="com.yalantis.ucrop.UCropActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
|
|||||||
BIN
android/app/src/main/res/mipmap-hdpi/launcher_icon.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
android/app/src/main/res/mipmap-mdpi/launcher_icon.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
assets/images/jpg/AppLogo.jpg
Normal file
|
After Width: | Height: | Size: 99 KiB |
BIN
assets/images/png/5e8479cea3a89ec07bf1089a2b0efeec.png
Normal file
|
After Width: | Height: | Size: 10 MiB |
BIN
assets/images/png/Black33.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
assets/images/png/Connected world-amico 1.png
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
assets/images/png/Group 1000004149.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
assets/images/png/Group 1000004385.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
assets/images/png/Group 1000004420.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
assets/images/png/LightGray.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/images/png/LightGray22.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/images/png/Organizing projects-pana 1.png
Normal file
|
After Width: | Height: | Size: 118 KiB |
BIN
assets/images/png/PinnedIcon.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/images/png/Vector 8.png
Normal file
|
After Width: | Height: | Size: 360 B |
BIN
assets/images/png/add 1.png
Normal file
|
After Width: | Height: | Size: 594 B |
BIN
assets/images/png/background.png
Normal file
|
After Width: | Height: | Size: 4.0 MiB |
BIN
assets/images/png/correct 1.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
assets/images/png/downarrow.png
Normal file
|
After Width: | Height: | Size: 450 B |
BIN
assets/images/png/ion_add.png
Normal file
|
After Width: | Height: | Size: 226 B |
BIN
assets/images/png/leave group.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
assets/images/png/postSaved.png
Normal file
|
After Width: | Height: | Size: 218 B |
BIN
assets/images/png/sidemenu/price-tag 1.png
Normal file
|
After Width: | Height: | Size: 493 B |
BIN
assets/images/png/sidemenu/rightarrow.png
Normal file
|
After Width: | Height: | Size: 215 B |
BIN
assets/images/png/uparrow.png
Normal file
|
After Width: | Height: | Size: 413 B |
BIN
assets/images/png/x-circle.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
9
assets/images/svg/add 1.svg
Normal file
|
After Width: | Height: | Size: 23 KiB |
1
devtools_options.yaml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
extensions:
|
||||||
@@ -64,7 +64,7 @@ PODS:
|
|||||||
- firebase_core (2.32.0):
|
- firebase_core (2.32.0):
|
||||||
- Firebase/CoreOnly (= 10.25.0)
|
- Firebase/CoreOnly (= 10.25.0)
|
||||||
- Flutter
|
- Flutter
|
||||||
- FirebaseAppCheckInterop (10.28.0)
|
- FirebaseAppCheckInterop (10.29.0)
|
||||||
- FirebaseAuth (10.25.0):
|
- FirebaseAuth (10.25.0):
|
||||||
- FirebaseAppCheckInterop (~> 10.17)
|
- FirebaseAppCheckInterop (~> 10.17)
|
||||||
- FirebaseCore (~> 10.0)
|
- FirebaseCore (~> 10.0)
|
||||||
@@ -76,12 +76,14 @@ PODS:
|
|||||||
- FirebaseCoreInternal (~> 10.0)
|
- FirebaseCoreInternal (~> 10.0)
|
||||||
- GoogleUtilities/Environment (~> 7.12)
|
- GoogleUtilities/Environment (~> 7.12)
|
||||||
- GoogleUtilities/Logger (~> 7.12)
|
- GoogleUtilities/Logger (~> 7.12)
|
||||||
- FirebaseCoreInternal (10.28.0):
|
- FirebaseCoreInternal (10.29.0):
|
||||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
||||||
- Flutter (1.0.0)
|
- Flutter (1.0.0)
|
||||||
- flutter_facebook_auth (6.0.4):
|
- flutter_facebook_auth (6.0.4):
|
||||||
- FBSDKLoginKit (~> 16.3.1)
|
- FBSDKLoginKit (~> 16.3.1)
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- flutter_keyboard_visibility (0.0.1):
|
||||||
|
- Flutter
|
||||||
- fluttertoast (0.0.2):
|
- fluttertoast (0.0.2):
|
||||||
- Flutter
|
- Flutter
|
||||||
- Toast
|
- Toast
|
||||||
@@ -130,10 +132,10 @@ PODS:
|
|||||||
- GTMAppAuth (4.1.1):
|
- GTMAppAuth (4.1.1):
|
||||||
- AppAuth/Core (~> 1.7)
|
- AppAuth/Core (~> 1.7)
|
||||||
- GTMSessionFetcher/Core (< 4.0, >= 3.3)
|
- GTMSessionFetcher/Core (< 4.0, >= 3.3)
|
||||||
- GTMSessionFetcher (3.4.1):
|
- GTMSessionFetcher (3.5.0):
|
||||||
- GTMSessionFetcher/Full (= 3.4.1)
|
- GTMSessionFetcher/Full (= 3.5.0)
|
||||||
- GTMSessionFetcher/Core (3.4.1)
|
- GTMSessionFetcher/Core (3.5.0)
|
||||||
- GTMSessionFetcher/Full (3.4.1):
|
- GTMSessionFetcher/Full (3.5.0):
|
||||||
- GTMSessionFetcher/Core
|
- GTMSessionFetcher/Core
|
||||||
- image_cropper (0.0.4):
|
- image_cropper (0.0.4):
|
||||||
- Flutter
|
- Flutter
|
||||||
@@ -149,9 +151,9 @@ PODS:
|
|||||||
- Flutter
|
- Flutter
|
||||||
- PromisesObjC (2.4.0)
|
- PromisesObjC (2.4.0)
|
||||||
- RecaptchaInterop (100.0.0)
|
- RecaptchaInterop (100.0.0)
|
||||||
- SDWebImage (5.19.2):
|
- SDWebImage (5.19.4):
|
||||||
- SDWebImage/Core (= 5.19.2)
|
- SDWebImage/Core (= 5.19.4)
|
||||||
- SDWebImage/Core (5.19.2)
|
- SDWebImage/Core (5.19.4)
|
||||||
- shared_preferences_foundation (0.0.1):
|
- shared_preferences_foundation (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
@@ -169,6 +171,7 @@ DEPENDENCIES:
|
|||||||
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
||||||
- Flutter (from `Flutter`)
|
- Flutter (from `Flutter`)
|
||||||
- flutter_facebook_auth (from `.symlinks/plugins/flutter_facebook_auth/ios`)
|
- flutter_facebook_auth (from `.symlinks/plugins/flutter_facebook_auth/ios`)
|
||||||
|
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
|
||||||
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
||||||
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
|
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
|
||||||
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
|
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
|
||||||
@@ -222,6 +225,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: Flutter
|
:path: Flutter
|
||||||
flutter_facebook_auth:
|
flutter_facebook_auth:
|
||||||
:path: ".symlinks/plugins/flutter_facebook_auth/ios"
|
:path: ".symlinks/plugins/flutter_facebook_auth/ios"
|
||||||
|
flutter_keyboard_visibility:
|
||||||
|
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
|
||||||
fluttertoast:
|
fluttertoast:
|
||||||
:path: ".symlinks/plugins/fluttertoast/ios"
|
:path: ".symlinks/plugins/fluttertoast/ios"
|
||||||
geolocator_apple:
|
geolocator_apple:
|
||||||
@@ -259,12 +264,13 @@ SPEC CHECKSUMS:
|
|||||||
Firebase: 0312a2352584f782ea56f66d91606891d4607f06
|
Firebase: 0312a2352584f782ea56f66d91606891d4607f06
|
||||||
firebase_auth: 5719ddc9f654b813405899480e84971bd8e61235
|
firebase_auth: 5719ddc9f654b813405899480e84971bd8e61235
|
||||||
firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197
|
firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197
|
||||||
FirebaseAppCheckInterop: 5315f40293191bfec04b2cfab0215760e441540a
|
FirebaseAppCheckInterop: 6a1757cfd4067d8e00fccd14fcc1b8fd78cfac07
|
||||||
FirebaseAuth: c0f93dcc570c9da2bffb576969d793e95c344fbb
|
FirebaseAuth: c0f93dcc570c9da2bffb576969d793e95c344fbb
|
||||||
FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483
|
FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483
|
||||||
FirebaseCoreInternal: 58d07f1362fddeb0feb6a857d1d1d1c5e558e698
|
FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934
|
||||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||||
flutter_facebook_auth: c8700ab1770f3d8e5e7456220e4f3bbcdb831454
|
flutter_facebook_auth: c8700ab1770f3d8e5e7456220e4f3bbcdb831454
|
||||||
|
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
|
||||||
fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db
|
fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db
|
||||||
geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450
|
geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450
|
||||||
google_maps_flutter_ios: d1318b4ff711612cab16862d7a87e31a7403d458
|
google_maps_flutter_ios: d1318b4ff711612cab16862d7a87e31a7403d458
|
||||||
@@ -273,7 +279,7 @@ SPEC CHECKSUMS:
|
|||||||
GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db
|
GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db
|
||||||
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
|
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
|
||||||
GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
|
GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
|
||||||
GTMSessionFetcher: 8000756fc1c19d2e5697b90311f7832d2e33f6cd
|
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
||||||
image_cropper: 2c150b3d63f4feaad31054d20381ddac0a460e63
|
image_cropper: 2c150b3d63f4feaad31054d20381ddac0a460e63
|
||||||
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
|
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
|
||||||
image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425
|
image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425
|
||||||
@@ -281,7 +287,7 @@ SPEC CHECKSUMS:
|
|||||||
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
||||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
|
RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
|
||||||
SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a
|
SDWebImage: 066c47b573f408f18caa467d71deace7c0f8280d
|
||||||
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
|
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
|
||||||
sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440
|
sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440
|
||||||
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
|
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||||
2105BA461347F33698D3FD7B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC7FC30109CCD5376F6BFA0F /* Pods_Runner.framework */; };
|
|
||||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
||||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
||||||
9FD3FE5A0194B5B2D8202DCF /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = D4274500C33C54346ECA2D49 /* GoogleService-Info.plist */; };
|
9FD3FE5A0194B5B2D8202DCF /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = D4274500C33C54346ECA2D49 /* GoogleService-Info.plist */; };
|
||||||
|
CA23128F3D22F12344F34510 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E6D63EEFD9353D7ADC2CB4D /* Pods_Runner.framework */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
@@ -31,16 +31,17 @@
|
|||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
01A8D59FC22474B9D47BC82F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||||
|
2E6D63EEFD9353D7ADC2CB4D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
355191DC29CD1712AAFF95EF /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||||
3E093EFD052120EBB5EFE242 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
4145FC1F69369273F821F424 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
||||||
5210D9302C4006FC0040021E /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
|
5210D9302C4006FC0040021E /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
|
||||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
|
7A2724068B1177B4942EB08B /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||||
8DA153E7FEAC51D97681DB93 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
||||||
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
||||||
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
@@ -49,7 +50,6 @@
|
|||||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
D4274500C33C54346ECA2D49 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = "<group>"; };
|
D4274500C33C54346ECA2D49 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||||
DC7FC30109CCD5376F6BFA0F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
2105BA461347F33698D3FD7B /* Pods_Runner.framework in Frameworks */,
|
CA23128F3D22F12344F34510 /* Pods_Runner.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -67,9 +67,9 @@
|
|||||||
01448FBCAC46C16EC8BC1181 /* Pods */ = {
|
01448FBCAC46C16EC8BC1181 /* Pods */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
8DA153E7FEAC51D97681DB93 /* Pods-Runner.debug.xcconfig */,
|
355191DC29CD1712AAFF95EF /* Pods-Runner.debug.xcconfig */,
|
||||||
3E093EFD052120EBB5EFE242 /* Pods-Runner.release.xcconfig */,
|
7A2724068B1177B4942EB08B /* Pods-Runner.release.xcconfig */,
|
||||||
01A8D59FC22474B9D47BC82F /* Pods-Runner.profile.xcconfig */,
|
4145FC1F69369273F821F424 /* Pods-Runner.profile.xcconfig */,
|
||||||
);
|
);
|
||||||
path = Pods;
|
path = Pods;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -92,8 +92,8 @@
|
|||||||
97C146F01CF9000F007C117D /* Runner */,
|
97C146F01CF9000F007C117D /* Runner */,
|
||||||
97C146EF1CF9000F007C117D /* Products */,
|
97C146EF1CF9000F007C117D /* Products */,
|
||||||
01448FBCAC46C16EC8BC1181 /* Pods */,
|
01448FBCAC46C16EC8BC1181 /* Pods */,
|
||||||
DE8E73CF7AB07643531FB23E /* Frameworks */,
|
|
||||||
D4274500C33C54346ECA2D49 /* GoogleService-Info.plist */,
|
D4274500C33C54346ECA2D49 /* GoogleService-Info.plist */,
|
||||||
|
F4C62E65C792A2B03ABD303E /* Frameworks */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@@ -121,10 +121,10 @@
|
|||||||
path = Runner;
|
path = Runner;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
DE8E73CF7AB07643531FB23E /* Frameworks */ = {
|
F4C62E65C792A2B03ABD303E /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
DC7FC30109CCD5376F6BFA0F /* Pods_Runner.framework */,
|
2E6D63EEFD9353D7ADC2CB4D /* Pods_Runner.framework */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -136,23 +136,21 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
2427B225240D99C3274E4E9F /* [CP] Check Pods Manifest.lock */,
|
30BAD3BCCCA511EDA8157430 /* [CP] Check Pods Manifest.lock */,
|
||||||
9740EEB61CF901F6004384FC /* Run Script */,
|
9740EEB61CF901F6004384FC /* Run Script */,
|
||||||
97C146EA1CF9000F007C117D /* Sources */,
|
97C146EA1CF9000F007C117D /* Sources */,
|
||||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||||
97C146EC1CF9000F007C117D /* Resources */,
|
97C146EC1CF9000F007C117D /* Resources */,
|
||||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||||
193E6ECF33FCE0798A403773 /* [CP] Embed Pods Frameworks */,
|
4343791398B77D1A11F261A2 /* [CP] Embed Pods Frameworks */,
|
||||||
A1A5C179E86574032091061E /* [CP] Copy Pods Resources */,
|
57523D9CD6B060C3BF6C72B7 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
);
|
);
|
||||||
name = Runner;
|
name = Runner;
|
||||||
packageProductDependencies = (
|
|
||||||
);
|
|
||||||
productName = Runner;
|
productName = Runner;
|
||||||
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
|
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
@@ -181,8 +179,6 @@
|
|||||||
Base,
|
Base,
|
||||||
);
|
);
|
||||||
mainGroup = 97C146E51CF9000F007C117D;
|
mainGroup = 97C146E51CF9000F007C117D;
|
||||||
packageReferences = (
|
|
||||||
);
|
|
||||||
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
|
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
|
||||||
projectDirPath = "";
|
projectDirPath = "";
|
||||||
projectRoot = "";
|
projectRoot = "";
|
||||||
@@ -208,24 +204,7 @@
|
|||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase section */
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
193E6ECF33FCE0798A403773 /* [CP] Embed Pods Frameworks */ = {
|
30BAD3BCCCA511EDA8157430 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
|
||||||
);
|
|
||||||
name = "[CP] Embed Pods Frameworks";
|
|
||||||
outputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
2427B225240D99C3274E4E9F /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -263,22 +242,24 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
||||||
};
|
};
|
||||||
9740EEB61CF901F6004384FC /* Run Script */ = {
|
4343791398B77D1A11F261A2 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
alwaysOutOfDate = 1;
|
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
);
|
);
|
||||||
name = "Run Script";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputPaths = (
|
outputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
A1A5C179E86574032091061E /* [CP] Copy Pods Resources */ = {
|
57523D9CD6B060C3BF6C72B7 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -295,6 +276,21 @@
|
|||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
|
9740EEB61CF901F6004384FC /* Run Script */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
name = "Run Script";
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||||
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 467 KiB |
|
Before Width: | Height: | Size: 295 B After Width: | Height: | Size: 613 B |
|
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 282 B After Width: | Height: | Size: 1018 B |
|
Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 704 B After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 586 B After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 762 B After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 22 KiB |
18
lib/Common/ApiRepositoy.dart
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
// import 'package:get/get.dart';
|
||||||
|
// import 'package:flutter/material.dart';
|
||||||
|
// import 'package:async/async.dart';
|
||||||
|
// import 'package:regroup/Main_Screens/Community_HomePage/PostDetailScreen/ViewModel/CommentsRepository.dart';
|
||||||
|
// class ApiRepository extends GetxController {
|
||||||
|
// Future<List<dynamic>> fetchMultipleAPIs() async {
|
||||||
|
// FutureGroup futureGroup = FutureGroup();
|
||||||
|
// // PostDetail
|
||||||
|
// futureGroup.add(CommentsRepository().getAllComments());
|
||||||
|
|
||||||
|
|
||||||
|
// // Close the group (no more futures can be added)
|
||||||
|
// futureGroup.close();
|
||||||
|
|
||||||
|
// // Wait for all futures to complete
|
||||||
|
// return await futureGroup.future;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:glassmorphism/glassmorphism.dart';
|
|
||||||
import 'package:glassmorphism_ui/glassmorphism_ui.dart';
|
import 'package:glassmorphism_ui/glassmorphism_ui.dart';
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/controller/MainController.dart';
|
import 'package:regroup/Common/controller/MainController.dart';
|
||||||
|
|
||||||
GlassContainer bottomnavigationbar(MainController _mainController) {
|
GlassContainer bottomnavigationbar(MainController _mainController) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// ignore_for_file: prefer_const_constructors
|
// ignore_for_file: prefer_const_constructors
|
||||||
|
|
||||||
import 'dart:ui';
|
|
||||||
|
|
||||||
import 'package:dropdown_button2/dropdown_button2.dart';
|
import 'package:dropdown_button2/dropdown_button2.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -8,7 +8,6 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
import 'package:regroup/Common/CommonWidget.dart';
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
|
|
||||||
class CommonDropdownBtn extends StatefulWidget {
|
class CommonDropdownBtn extends StatefulWidget {
|
||||||
CommonDropdownBtn({
|
CommonDropdownBtn({
|
||||||
@@ -107,7 +106,7 @@ class _CommonDropdownBtnState extends State<CommonDropdownBtn> {
|
|||||||
Color(0xFFffffff).withOpacity(0.8),
|
Color(0xFFffffff).withOpacity(0.8),
|
||||||
Color(0xFFFFFFFF).withOpacity(0.8),
|
Color(0xFFFFFFFF).withOpacity(0.8),
|
||||||
],
|
],
|
||||||
stops: [
|
stops: const [
|
||||||
0.1,
|
0.1,
|
||||||
1,
|
1,
|
||||||
]),
|
]),
|
||||||
@@ -245,7 +244,7 @@ class _CommonDropdownradioBtnState extends State<CommonDropdownradioBtn> {
|
|||||||
Color(0xFFffffff).withOpacity(0.8),
|
Color(0xFFffffff).withOpacity(0.8),
|
||||||
Color(0xFFFFFFFF).withOpacity(0.8),
|
Color(0xFFFFFFFF).withOpacity(0.8),
|
||||||
],
|
],
|
||||||
stops: [0.1, 1],
|
stops: const [0.1, 1],
|
||||||
),
|
),
|
||||||
borderRadius: BorderRadius.circular(30),
|
borderRadius: BorderRadius.circular(30),
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
@@ -589,7 +588,7 @@ class _CommonDropdownCheckboxState extends State<CommonDropdownCheckbox> {
|
|||||||
Color(0xFFffffff).withOpacity(0.8),
|
Color(0xFFffffff).withOpacity(0.8),
|
||||||
Color(0xFFFFFFFF).withOpacity(0.8),
|
Color(0xFFFFFFFF).withOpacity(0.8),
|
||||||
],
|
],
|
||||||
stops: [0.1, 1],
|
stops: const [0.1, 1],
|
||||||
),
|
),
|
||||||
borderRadius: BorderRadius.circular(30.r),
|
borderRadius: BorderRadius.circular(30.r),
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Widget commonGlassContainer({
|
|||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
colors: [
|
colors: [
|
||||||
Color(0xFFFFFFFF).withOpacity(opacity1),
|
const Color(0xFFFFFFFF).withOpacity(opacity1),
|
||||||
const Color(0xFFFFFFFF).withOpacity(opacity2),
|
const Color(0xFFFFFFFF).withOpacity(opacity2),
|
||||||
],
|
],
|
||||||
stops: const [
|
stops: const [
|
||||||
@@ -61,8 +61,8 @@ Widget commonGlassContainerblue({
|
|||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
colors: [
|
colors: [
|
||||||
Color(0xFF009DAB).withOpacity(0.48),
|
const Color(0xFF009DAB).withOpacity(0.48),
|
||||||
Color(0xFF009DAB).withOpacity(0.12),
|
const Color(0xFF009DAB).withOpacity(0.12),
|
||||||
],
|
],
|
||||||
stops: const [
|
stops: const [
|
||||||
0.1,
|
0.1,
|
||||||
@@ -82,7 +82,7 @@ Widget commonGlassContainerblue({
|
|||||||
|
|
||||||
Widget commonGlassUIBlue({
|
Widget commonGlassUIBlue({
|
||||||
required double width,
|
required double width,
|
||||||
required double height,
|
required double? height,
|
||||||
required Widget customWidget,
|
required Widget customWidget,
|
||||||
// required double border,
|
// required double border,
|
||||||
double mainOpacity = 1,
|
double mainOpacity = 1,
|
||||||
@@ -99,8 +99,8 @@ Widget commonGlassUIBlue({
|
|||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
colors: [
|
colors: [
|
||||||
Color(0xFF009DAB).withOpacity(0.48),
|
const Color(0xFF009DAB).withOpacity(0.48),
|
||||||
Color(0xFF009DAB).withOpacity(0.12),
|
const Color(0xFF009DAB).withOpacity(0.12),
|
||||||
],
|
],
|
||||||
stops: const [
|
stops: const [
|
||||||
0.1,
|
0.1,
|
||||||
@@ -113,7 +113,7 @@ Widget commonGlassUIBlue({
|
|||||||
|
|
||||||
Widget commonGlassUI({
|
Widget commonGlassUI({
|
||||||
required double width,
|
required double width,
|
||||||
required double height,
|
required double? height,
|
||||||
// required double border,
|
// required double border,
|
||||||
double mainOpacity = 1,
|
double mainOpacity = 1,
|
||||||
double opacity1 = 0.04,
|
double opacity1 = 0.04,
|
||||||
@@ -133,7 +133,7 @@ Widget commonGlassUI({
|
|||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
colors: [
|
colors: [
|
||||||
Color(0xFFFFFFFF).withOpacity(opacity1),
|
const Color(0xFFFFFFFF).withOpacity(opacity1),
|
||||||
const Color(0xFFFFFFFF).withOpacity(opacity2),
|
const Color(0xFFFFFFFF).withOpacity(opacity2),
|
||||||
],
|
],
|
||||||
stops: const [
|
stops: const [
|
||||||
@@ -147,7 +147,7 @@ Widget commonGlassUI({
|
|||||||
|
|
||||||
Widget commonContainer({
|
Widget commonContainer({
|
||||||
required double width,
|
required double width,
|
||||||
required double height,
|
required double? height,
|
||||||
// required double border,
|
// required double border,
|
||||||
// double mainOpacity = 1,
|
// double mainOpacity = 1,
|
||||||
double opacity1 = 0.04,
|
double opacity1 = 0.04,
|
||||||
@@ -167,7 +167,7 @@ Widget commonContainer({
|
|||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
colors: [
|
colors: [
|
||||||
Color(0xFFFFFFFF).withOpacity(opacity1),
|
const Color(0xFFFFFFFF).withOpacity(opacity1),
|
||||||
const Color(0xFFFFFFFF).withOpacity(opacity2),
|
const Color(0xFFFFFFFF).withOpacity(opacity2),
|
||||||
],
|
],
|
||||||
stops: const [
|
stops: const [
|
||||||
|
|||||||
@@ -5,15 +5,16 @@ class CommonTabBar extends StatelessWidget {
|
|||||||
// Set the desired height
|
// Set the desired height
|
||||||
|
|
||||||
final List<Tab> tabs;
|
final List<Tab> tabs;
|
||||||
CommonTabBar({required this.tabs,});
|
const CommonTabBar({super.key, required this.tabs,});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return TabBar(
|
return TabBar(
|
||||||
dividerColor: Color(0xFFFFFFFF).withOpacity(0.07),
|
|
||||||
|
dividerColor: const Color(0xFFFFFFFF).withOpacity(0.07),
|
||||||
labelStyle: TextStyle(
|
labelStyle: TextStyle(
|
||||||
fontSize: 14.sp,
|
fontSize: 14.sp,
|
||||||
color: Color(0xFFFCFCFC),
|
color: const Color(0xFFFCFCFC),
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
fontFamily: 'Helvetica'),
|
fontFamily: 'Helvetica'),
|
||||||
indicatorSize: TabBarIndicatorSize.tab,
|
indicatorSize: TabBarIndicatorSize.tab,
|
||||||
@@ -21,7 +22,7 @@ class CommonTabBar extends StatelessWidget {
|
|||||||
// labelColor: Colors.white,
|
// labelColor: Colors.white,
|
||||||
indicatorWeight: 2.h,
|
indicatorWeight: 2.h,
|
||||||
dividerHeight: 2.h,
|
dividerHeight: 2.h,
|
||||||
unselectedLabelColor: Color(0xFFFCFCFC),
|
unselectedLabelColor: const Color(0xFFFCFCFC),
|
||||||
overlayColor: MaterialStateProperty.all(const Color(0xFFD90B2E)),
|
overlayColor: MaterialStateProperty.all(const Color(0xFFD90B2E)),
|
||||||
tabs: tabs);
|
tabs: tabs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||||
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
import 'package:regroup/Utils/texts.dart';
|
||||||
@@ -23,7 +22,7 @@ class TextInputField extends StatefulWidget {
|
|||||||
class _TextInputFieldState extends State<TextInputField> {
|
class _TextInputFieldState extends State<TextInputField> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return SizedBox(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: 46.h,
|
height: 46.h,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
@@ -78,13 +77,13 @@ Widget MessageTextInputField(
|
|||||||
labelStyle: const TextStyle(color: Colors.black),
|
labelStyle: const TextStyle(color: Colors.black),
|
||||||
errorStyle: TextStyle(
|
errorStyle: TextStyle(
|
||||||
fontSize: 13.sp,
|
fontSize: 13.sp,
|
||||||
color: Color.fromARGB(255, 245, 130, 122),
|
color: const Color.fromARGB(255, 245, 130, 122),
|
||||||
),
|
),
|
||||||
contentPadding: const EdgeInsets.symmetric(
|
contentPadding: const EdgeInsets.symmetric(
|
||||||
vertical: 12.0,
|
vertical: 12.0,
|
||||||
horizontal: 16), //<-- Adjust the vertical padding as needed
|
horizontal: 16), //<-- Adjust the vertical padding as needed
|
||||||
filled: true,
|
filled: true,
|
||||||
fillColor: Color(0xFFFFF3E4),
|
fillColor: const Color(0xFFFFF3E4),
|
||||||
border: OutlineInputBorder(
|
border: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(5),
|
borderRadius: BorderRadius.circular(5),
|
||||||
borderSide: const BorderSide(color: Color(0xFFE8C69F80), width: 1),
|
borderSide: const BorderSide(color: Color(0xFFE8C69F80), width: 1),
|
||||||
@@ -124,7 +123,7 @@ Widget commonDivider() {
|
|||||||
return Container(
|
return Container(
|
||||||
height: 1.5.h,
|
height: 1.5.h,
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
decoration: BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
gradient: LinearGradient(
|
gradient: LinearGradient(
|
||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
@@ -154,7 +153,7 @@ Future<void> datePicker(
|
|||||||
onSecondary: Colors.white),
|
onSecondary: Colors.white),
|
||||||
textButtonTheme: TextButtonThemeData(
|
textButtonTheme: TextButtonThemeData(
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
foregroundColor: Color(0xFFD90B2E),
|
foregroundColor: const Color(0xFFD90B2E),
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
final DateTime? picked = await showDatePicker(
|
final DateTime? picked = await showDatePicker(
|
||||||
@@ -171,7 +170,7 @@ Future<void> datePicker(
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (picked != null) {
|
if (picked != null) {
|
||||||
controller.text = DateFormat('dd-MM-yyyy').format(picked);
|
controller.text = DateFormat('yyyy-MM-dd').format(picked);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,11 +185,12 @@ Future<TimeOfDay?> showCustomTimePicker(BuildContext context,
|
|||||||
onSurface: Colors.white,
|
onSurface: Colors.white,
|
||||||
),
|
),
|
||||||
textTheme: Theme.of(context).textTheme.copyWith(
|
textTheme: Theme.of(context).textTheme.copyWith(
|
||||||
headline6: TextStyle(color: Colors.blue), // Change the title color
|
titleLarge:
|
||||||
|
const TextStyle(color: Colors.blue), // Change the title color
|
||||||
),
|
),
|
||||||
textButtonTheme: TextButtonThemeData(
|
textButtonTheme: TextButtonThemeData(
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
foregroundColor: Color(0xFFD90B2E),
|
foregroundColor: const Color(0xFFD90B2E),
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
return showTimePicker(
|
return showTimePicker(
|
||||||
@@ -219,13 +219,13 @@ Widget stackContainers({
|
|||||||
width: 30,
|
width: 30,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
shape: BoxShape.circle,
|
shape: BoxShape.circle,
|
||||||
color: Color(0xFFD90B2E),
|
color: const Color(0xFFD90B2E),
|
||||||
border: Border.all(color: Color(0xFF2C3742), width: 1),
|
border: Border.all(color: const Color(0xFF2C3742), width: 1),
|
||||||
),
|
),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
number,
|
number,
|
||||||
style: TextStyle(
|
style: const TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
fontSize: 8,
|
fontSize: 8,
|
||||||
@@ -248,7 +248,8 @@ Widget stackContainers({
|
|||||||
width: 30,
|
width: 30,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
shape: BoxShape.circle,
|
shape: BoxShape.circle,
|
||||||
border: Border.all(color: Color(0xFF2C3742), width: 1),
|
border: Border.all(
|
||||||
|
color: const Color(0xFF2C3742), width: 1),
|
||||||
),
|
),
|
||||||
child: CircleAvatar(
|
child: CircleAvatar(
|
||||||
foregroundImage: AssetImage(containerImages[index]),
|
foregroundImage: AssetImage(containerImages[index]),
|
||||||
@@ -265,6 +266,81 @@ Widget stackContainers({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget stackContainersGroups({
|
||||||
|
required String number,
|
||||||
|
required List<String> containerImages,
|
||||||
|
}) {
|
||||||
|
// Define the maximum number of images to display
|
||||||
|
const maxImagesToShow = 3;
|
||||||
|
|
||||||
|
// Calculate the number of images to show and the remaining count
|
||||||
|
// final remainingCount = containerImages.length - maxImagesToShow;
|
||||||
|
final imagesToShow = containerImages.take(maxImagesToShow).toList();
|
||||||
|
|
||||||
|
return Row(
|
||||||
|
children: [
|
||||||
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
|
children: [
|
||||||
|
containerImages.length > maxImagesToShow
|
||||||
|
? Container(
|
||||||
|
height: 30.h,
|
||||||
|
width: 30.w,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
color: const Color(0xFFD90B2E),
|
||||||
|
border:
|
||||||
|
Border.all(color: const Color(0xFF2C3742), width: 1),
|
||||||
|
),
|
||||||
|
child: Center(
|
||||||
|
child: Text(
|
||||||
|
// remainingCount > 0 ? '+$remainingCount' : '',
|
||||||
|
number,
|
||||||
|
style: const TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
fontSize: 8,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: SizedBox(
|
||||||
|
height: 30.h,
|
||||||
|
width: 30.w,
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
left: containerImages.length > maxImagesToShow ? 22.w : 0.w,
|
||||||
|
child: SizedBox(
|
||||||
|
height: 30,
|
||||||
|
width: 30 * maxImagesToShow.toDouble(),
|
||||||
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
|
children: List.generate(imagesToShow.length, (index) {
|
||||||
|
return Positioned(
|
||||||
|
left: index * 22.0,
|
||||||
|
child: Container(
|
||||||
|
height: 30,
|
||||||
|
width: 30,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
border: Border.all(
|
||||||
|
color: const Color(0xFF2C3742), width: 1),
|
||||||
|
),
|
||||||
|
child: CircleAvatar(
|
||||||
|
backgroundImage: NetworkImage(imagesToShow[index]),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Widget stackContainers2({
|
Widget stackContainers2({
|
||||||
required List<String> containerImages,
|
required List<String> containerImages,
|
||||||
}) {
|
}) {
|
||||||
@@ -284,7 +360,7 @@ Widget stackContainers2({
|
|||||||
width: 40,
|
width: 40,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
shape: BoxShape.circle,
|
shape: BoxShape.circle,
|
||||||
border: Border.all(color: Color(0xFF2C3742), width: 1),
|
border: Border.all(color: const Color(0xFF2C3742), width: 1),
|
||||||
),
|
),
|
||||||
child: CircleAvatar(
|
child: CircleAvatar(
|
||||||
foregroundImage: AssetImage(containerImages[index]),
|
foregroundImage: AssetImage(containerImages[index]),
|
||||||
@@ -321,7 +397,7 @@ Widget stackReaction({
|
|||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
colors: [
|
colors: [
|
||||||
Color(0xFFFFFFFF).withOpacity(0.1),
|
const Color(0xFFFFFFFF).withOpacity(0.1),
|
||||||
const Color(0xFFFFFFFF).withOpacity(0.06),
|
const Color(0xFFFFFFFF).withOpacity(0.06),
|
||||||
],
|
],
|
||||||
stops: const [
|
stops: const [
|
||||||
@@ -329,7 +405,8 @@ Widget stackReaction({
|
|||||||
1,
|
1,
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
border: Border.all(color: Color(0xFF1E3A46), width: 1.71)),
|
border: Border.all(
|
||||||
|
color: const Color(0xFF1E3A46), width: 1.71)),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
containerImages[index],
|
containerImages[index],
|
||||||
|
|||||||
36
lib/Common/ConvertServerDateToUserDate.dart
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
class ConvertServerDateToUserDate {
|
||||||
|
|
||||||
|
convertServerDateToReadableFormate(String? createAtstring) {
|
||||||
|
|
||||||
|
if (createAtstring == null || createAtstring.isEmpty) {
|
||||||
|
createAtstring = DateTime.now().toIso8601String();
|
||||||
|
}
|
||||||
|
String? timeAgo;
|
||||||
|
|
||||||
|
try {
|
||||||
|
DateTime postDateTime = DateTime.parse(createAtstring);
|
||||||
|
DateTime now = DateTime.now();
|
||||||
|
Duration difference = now.difference(postDateTime);
|
||||||
|
if (difference.inDays > 365) {
|
||||||
|
timeAgo = '${(difference.inDays / 365).floor()} years ago';
|
||||||
|
} else if (difference.inDays > 30) {
|
||||||
|
timeAgo = '${(difference.inDays / 30).floor()} months ago';
|
||||||
|
} else if (difference.inDays > 7) {
|
||||||
|
timeAgo = '${(difference.inDays / 7).floor()} weeks ago';
|
||||||
|
} else if (difference.inDays > 0) {
|
||||||
|
timeAgo = '${difference.inDays} days ago';
|
||||||
|
} else if (difference.inHours > 0) {
|
||||||
|
timeAgo = '${difference.inHours} hours ago';
|
||||||
|
} else if (difference.inMinutes > 0) {
|
||||||
|
timeAgo = '${difference.inMinutes} minutes ago';
|
||||||
|
} else {
|
||||||
|
timeAgo = '${difference.inSeconds} seconds ago';
|
||||||
|
}
|
||||||
|
print("Time ago: $timeAgo");
|
||||||
|
return timeAgo;
|
||||||
|
} catch (e) {
|
||||||
|
print("Error parsing date: $e");
|
||||||
|
String timeAgo = 'Unknown';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
lib/Common/ReactionIcons.dart
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class ReactionActions extends StatelessWidget {
|
||||||
|
const ReactionActions({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return const Placeholder();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -34,7 +34,6 @@ class ApiUrls {
|
|||||||
|
|
||||||
static const getuserdetails = "${baseUrl}get-auth-user-data";
|
static const getuserdetails = "${baseUrl}get-auth-user-data";
|
||||||
|
|
||||||
|
|
||||||
static const getfaqs = "${baseUrl}fetch-faqs";
|
static const getfaqs = "${baseUrl}fetch-faqs";
|
||||||
|
|
||||||
static const getprivacypolicy = "${baseUrl}fetch-privacy-policy";
|
static const getprivacypolicy = "${baseUrl}fetch-privacy-policy";
|
||||||
@@ -59,23 +58,144 @@ class ApiUrls {
|
|||||||
|
|
||||||
static const postchangepassverify = "${baseUrl}verify-update-password-otp";
|
static const postchangepassverify = "${baseUrl}verify-update-password-otp";
|
||||||
|
|
||||||
|
static const gettimelineabilitylist = "${baseUrl}list-of-abilities";
|
||||||
|
|
||||||
|
static const posttimeline = "${baseUrl}create-timeline";
|
||||||
|
|
||||||
|
static const postaccountvisibility = "${baseUrl}account-visibility";
|
||||||
|
|
||||||
|
static const postdeleteaccount = "${baseUrl}delete-my-account";
|
||||||
|
|
||||||
|
static const postlogoutaccount = "${baseUrl}logout";
|
||||||
|
|
||||||
|
static const getedittimeline = "${baseUrl}get-timeline-data";
|
||||||
|
|
||||||
|
static const postedittimeline = "${baseUrl}update-timeline";
|
||||||
|
|
||||||
|
static const postremovetimeline = "${baseUrl}delete-timeline";
|
||||||
|
|
||||||
|
static const postremovecertification = "${baseUrl}delete-certification";
|
||||||
|
|
||||||
|
static const postcertification = "${baseUrl}store-certification";
|
||||||
|
|
||||||
|
static const getaccountsessions = "${baseUrl}get-account-session";
|
||||||
|
|
||||||
|
static const postuserdevice = "${baseUrl}store-account-session";
|
||||||
|
|
||||||
|
static const getmyjoinedgroups = "${baseUrl}my-joined-groups";
|
||||||
|
|
||||||
|
static const getmycommunity = "${baseUrl}fetch-my-communities";
|
||||||
|
|
||||||
|
static const getcommunitydetail = "${baseUrl}fetch-community-all-details";
|
||||||
|
|
||||||
|
static const getComPostdetail = "${baseUrl}fetch-community-all-posts";
|
||||||
|
|
||||||
|
static const postleavecommunity = "${baseUrl}leave-community";
|
||||||
|
|
||||||
|
static const postmutenotification = "${baseUrl}mute-unmute-community";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static const getrequestedcommunity =
|
||||||
|
"${baseUrl}fetch-joining-request-for-community";
|
||||||
|
|
||||||
|
static const getInvitecommunity = "${baseUrl}fetch-all-invite";
|
||||||
|
|
||||||
|
static const postnewinterest = "${baseUrl}store-tags";
|
||||||
|
|
||||||
|
static const postacceptreject = "${baseUrl}accept-reject-tag";
|
||||||
|
|
||||||
|
|
||||||
|
static const getinterests = "${baseUrl}list-of-tags-and-requested-tags";
|
||||||
|
|
||||||
|
|
||||||
|
static const postcancelrequest = "${baseUrl}cancel-request-of-community";
|
||||||
|
|
||||||
|
static const postacceptinvite = "${baseUrl}accept-invite-to-join-community";
|
||||||
|
|
||||||
|
static const postrejectinvite = "${baseUrl}reject-invite-to-join-community";
|
||||||
|
|
||||||
|
static const getusercertificates = "${baseUrl}my-certificates";
|
||||||
|
|
||||||
static const postnotification = "${baseUrl}update-notification-settings";
|
static const postnotification = "${baseUrl}update-notification-settings";
|
||||||
static const getnotification = "${baseUrl}fetch-notification-settings";
|
static const getnotification = "${baseUrl}fetch-notification-settings";
|
||||||
|
|
||||||
static const getblockuser = "${baseUrl}fetch-blocked-profile";
|
static const getblockuser = "${baseUrl}fetch-blocked-profile";
|
||||||
static const postblockuser = "${baseUrl}block-profile";
|
static const postblockuser = "${baseUrl}block-profile";
|
||||||
|
static const getlatestpost = "${baseUrl}fetch-latest-post";
|
||||||
|
static const getpopularpost = "${baseUrl}fetch-popular-post";
|
||||||
|
|
||||||
|
static const getfeedpost = "${baseUrl}fetch-post";
|
||||||
|
static const tagcommunityuser = "${baseUrl}fetch-communities-tags-to-pin";
|
||||||
|
|
||||||
// Individual
|
// Individual
|
||||||
static const posteditprofile = "${baseUrl}update-profile";
|
static const posteditprofile = "${baseUrl}update-profile";
|
||||||
static const geteditprofile = "${baseUrl}fetch-profile";
|
static const geteditprofile = "${baseUrl}fetch-profile";
|
||||||
|
static const getinterestlist = "${baseUrl}fetch-interests";
|
||||||
|
|
||||||
// Business
|
// Business
|
||||||
static const posteditprofilebusiness = "${baseUrl}update-business-profile";
|
static const posteditprofilebusiness = "${baseUrl}update-business-profile";
|
||||||
static const geteditprofilebusiness = "${baseUrl}fetch-business-profile";
|
static const geteditprofilebusiness = "${baseUrl}fetch-business-profile";
|
||||||
|
|
||||||
|
//Guest
|
||||||
|
|
||||||
|
static const getGuestProfileInd =
|
||||||
|
"${baseUrl}get-guest-view-of-individual-user-profile";
|
||||||
|
static const getGuestProfileBus =
|
||||||
|
"${baseUrl}get-guest-view-of-business-user-profile";
|
||||||
|
|
||||||
|
static const getGuestfollowers = "${baseUrl}get-guest-user-followers";
|
||||||
|
static const getGuestfollowing = "${baseUrl}get-guest-user-following";
|
||||||
|
|
||||||
|
//community
|
||||||
|
static const getpostcommunitylist = "${baseUrl}fetch-communities-with-tags";
|
||||||
|
static const getpopulartagscommunity = "${baseUrl}fetch-popular-tags";
|
||||||
|
|
||||||
|
static const postnewtags = "${baseUrl}store-tags";
|
||||||
|
static const postupload = "${baseUrl}store-post";
|
||||||
|
static const postlike = "${baseUrl}fetch-like-list";
|
||||||
|
|
||||||
|
static const getuserpinlist = "${baseUrl}fetch-pinned-detail";
|
||||||
|
|
||||||
|
static const postusertag = "${baseUrl}pin-unpin";
|
||||||
|
|
||||||
|
//comments
|
||||||
|
static const getComments = "${baseUrl}fetch-comment-with-replied-comment";
|
||||||
|
static const storeComments = "${baseUrl}store-comment";
|
||||||
|
static const storeRepliesOnComments = "${baseUrl}reply-on-comment";
|
||||||
|
static const deleteComments = "${baseUrl}delete-comment";
|
||||||
|
static const deleteRepliesComments = "${baseUrl}delete-reply-on-comment";
|
||||||
|
|
||||||
|
static const getLikeicons = "${baseUrl}fetch-like-icons";
|
||||||
|
|
||||||
|
static const postLike = "${baseUrl}like-post";
|
||||||
|
|
||||||
|
static const getTagsdetails = "${baseUrl}fetch-post-by-tag";
|
||||||
|
|
||||||
|
static const postusersave = "${baseUrl}save-post";
|
||||||
|
static const getpostdetail = "${baseUrl}fetch-single-post";
|
||||||
|
|
||||||
|
static const getpopularTagsdetails = "${baseUrl}fetch-popular-post";
|
||||||
|
|
||||||
|
static const postcreatecommunity = "${baseUrl}create-community";
|
||||||
|
|
||||||
|
static const getcommunityaddgroups = "${baseUrl}fetch-groups-to-add";
|
||||||
|
|
||||||
|
static const getcommunitygroups = "${baseUrl}fetch-community-all-groups";
|
||||||
|
|
||||||
|
static const getcommunitymembers = "${baseUrl}fetch-community-all-members";
|
||||||
|
|
||||||
|
static const geteditcommunity = "${baseUrl}edit-community";
|
||||||
|
|
||||||
|
static const posteditcommunity = "${baseUrl}update-community";
|
||||||
|
|
||||||
|
static const getactivitieslist = "${baseUrl}get_activity";
|
||||||
|
|
||||||
|
static const getcommunitymanagegroups = "${baseUrl}fetch-community-all-groups-list";
|
||||||
|
|
||||||
|
static const postremovegroupscommunity = "${baseUrl}remove-groups-from-community";
|
||||||
|
|
||||||
|
static const postmanageaddgroupscommunity = "${baseUrl}add-groups-in-community";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:regroup/Main_Screens/CalenderTab/CalenderTab.dart';
|
||||||
|
import 'package:regroup/Main_Screens/Chats/View/chatsmainscreen.dart';
|
||||||
|
import 'package:regroup/Main_Screens/Community_HomePage/Community.dart';
|
||||||
|
import 'package:regroup/Main_Screens/GroupTab/View/GroupTab.dart';
|
||||||
|
import 'package:regroup/Main_Screens/ProfileTab/EditProfile/View/ProfileTab.dart';
|
||||||
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/CalenderTab/CalenderTab.dart';
|
|
||||||
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/Chats/View/chatsmainscreen.dart';
|
|
||||||
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/Community/Community.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/GroupTab/View/GroupTab.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/EditProfile/View/ProfileTab.dart';
|
|
||||||
|
|
||||||
class MainController extends GetxController {
|
class MainController extends GetxController {
|
||||||
var selectedIndex = 0.obs;
|
var selectedIndex = 0.obs;
|
||||||
|
|||||||
@@ -2,11 +2,24 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:regroup/Common/controller/MainController.dart';
|
import 'package:regroup/Common/controller/MainController.dart';
|
||||||
|
import 'package:regroup/Main_Screens/ProfileTab/EditProfile/ViewModel/InterestApiList.dart';
|
||||||
|
|
||||||
final MainController mainController = Get.put(MainController());
|
final MainController mainController = Get.put(MainController());
|
||||||
|
class MainScreen extends StatefulWidget {
|
||||||
class MainScreen extends StatelessWidget {
|
|
||||||
const MainScreen({super.key});
|
const MainScreen({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<MainScreen> createState() => _MainScreenState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _MainScreenState extends State<MainScreen> {
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
InterestListApi().getinterestlistApi();
|
||||||
|
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Obx(() {
|
return Obx(() {
|
||||||
|
|||||||
686
lib/Common/controller/NormalPostCard.dart
Normal file
@@ -0,0 +1,686 @@
|
|||||||
|
import 'dart:developer';
|
||||||
|
|
||||||
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_reaction_button/flutter_reaction_button.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
||||||
|
import 'package:regroup/Common/CommonWidget.dart';
|
||||||
|
import 'package:regroup/Common/base_manager.dart';
|
||||||
|
import 'package:regroup/Main_Screens/Community/Model/CommonDatumObjModel.dart';
|
||||||
|
import 'package:regroup/Main_Screens/Community/Model/fetchicons.dart';
|
||||||
|
import 'package:regroup/Main_Screens/Community/ViewModel/postmethod.dart';
|
||||||
|
import 'package:regroup/Main_Screens/Community_HomePage/view_model/CountersHelper.dart';
|
||||||
|
import 'package:regroup/Main_Screens/Community_HomePage/view_model/communitypostmethod.dart';
|
||||||
|
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||||
|
import 'package:regroup/Utils/dialogs.dart';
|
||||||
|
import 'package:regroup/Utils/texts.dart';
|
||||||
|
import 'package:regroup/resources/routes/route_name.dart';
|
||||||
|
import 'package:regroup/sidemenu/view_model/postmethod.dart';
|
||||||
|
|
||||||
|
class NormalCardTile extends StatefulWidget {
|
||||||
|
List<ManageTagPopular> tags;
|
||||||
|
String? createAt;
|
||||||
|
CommonDatumObjModelData commonObj;
|
||||||
|
String forWhichTab;
|
||||||
|
List<ReactionData> reactions;
|
||||||
|
Map<int, ReactionData?> selectedReactions;
|
||||||
|
bool? coachbool;
|
||||||
|
bool showCommentButton;
|
||||||
|
int currentIndex;
|
||||||
|
NormalCardTile(
|
||||||
|
{Key? key,
|
||||||
|
required this.tags,
|
||||||
|
this.createAt,
|
||||||
|
required this.forWhichTab,
|
||||||
|
required this.commonObj,
|
||||||
|
required this.reactions,
|
||||||
|
required this.selectedReactions,
|
||||||
|
required this.currentIndex,
|
||||||
|
this.showCommentButton = true,
|
||||||
|
this.coachbool})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_NormalCardTileState createState() => _NormalCardTileState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _NormalCardTileState extends State<NormalCardTile> {
|
||||||
|
RxString mainImage = 'assets/images/png/uiw_like-o.png'.obs;
|
||||||
|
final CountersHelper countersHelper = Get.find<CountersHelper>();
|
||||||
|
int saveCount = 0;
|
||||||
|
_handleReactionChange(Reaction<String>? reaction) async {
|
||||||
|
if (widget.selectedReactions[widget.commonObj.id] != null &&
|
||||||
|
reaction?.value ==
|
||||||
|
widget.selectedReactions[widget.commonObj.id]!.id.toString() ||
|
||||||
|
reaction?.value == null) {
|
||||||
|
// User tapped on the currently selected reaction, so remove it
|
||||||
|
|
||||||
|
//api call for dislike
|
||||||
|
|
||||||
|
await LikeUploaddata(
|
||||||
|
widget.selectedReactions[widget.commonObj.id]?.id,
|
||||||
|
widget.commonObj.id!,
|
||||||
|
);
|
||||||
|
setState(() {
|
||||||
|
widget.selectedReactions[widget.commonObj.id!] = null;
|
||||||
|
//decrement gloally
|
||||||
|
countersHelper.likesCounterPopular[widget.currentIndex]--;
|
||||||
|
log("global value ${countersHelper.likesCounterPopular[widget.currentIndex]}");
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// User selected a new reaction
|
||||||
|
var newSelectedReaction = widget.reactions.firstWhere(
|
||||||
|
(r) => r.id.toString() == reaction?.value,
|
||||||
|
orElse: () => widget.reactions.first, // Default reaction if not found
|
||||||
|
);
|
||||||
|
await _handleReactionChangeApiCall(
|
||||||
|
newSelectedReaction, widget.commonObj.id!);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _handleReactionChangeApiCall(
|
||||||
|
ReactionData? reaction, int postId) async {
|
||||||
|
setState(() {
|
||||||
|
widget.selectedReactions[postId] =
|
||||||
|
reaction; // Set the selected reaction for this post
|
||||||
|
|
||||||
|
if (countersHelper.likesCounterPopular[widget.currentIndex] <=
|
||||||
|
widget.commonObj.totalReactionCount!) {
|
||||||
|
countersHelper.likesCounterPopular[widget.currentIndex]++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await LikeUploaddata(
|
||||||
|
reaction?.id,
|
||||||
|
postId,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
LikeUploaddata(int? likeIconId, int? postid) async {
|
||||||
|
Map<String, dynamic> updata = {
|
||||||
|
"manage_posts_xid": postid,
|
||||||
|
"like_icons_xid": likeIconId ?? '',
|
||||||
|
};
|
||||||
|
final data = await CommunitypostMethod().postLikepost(updata);
|
||||||
|
if (data.status == ResponseStatus.SUCCESS) {
|
||||||
|
// return utils.showToast(data.message);
|
||||||
|
} else {
|
||||||
|
return utils.showToast(data.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateImage(String reaction) {
|
||||||
|
switch (reaction) {
|
||||||
|
case 'like':
|
||||||
|
mainImage.value = 'assets/images/png/f7_hand-thumbsup.png';
|
||||||
|
break;
|
||||||
|
case 'heart':
|
||||||
|
mainImage.value = 'assets/images/png/heart 2.png';
|
||||||
|
break;
|
||||||
|
case 'party':
|
||||||
|
mainImage.value = 'assets/images/png/party-popper 2.png';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// Handle any other cases or do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
saveunsavepost(int popularpostid) async {
|
||||||
|
// utils.loader();
|
||||||
|
Map<String, dynamic> updata = {
|
||||||
|
"manage_posts_xid": popularpostid,
|
||||||
|
};
|
||||||
|
final data = await Communitypostmethod().postUserSave(updata);
|
||||||
|
if (data.status == ResponseStatus.SUCCESS) {
|
||||||
|
if (countersHelper.saveButtonPopular[widget.currentIndex] == false) {
|
||||||
|
countersHelper.savePostCounterPopular[widget.currentIndex]++;
|
||||||
|
} else {
|
||||||
|
countersHelper.savePostCounterPopular[widget.currentIndex]--;
|
||||||
|
}
|
||||||
|
countersHelper.saveButtonPopular[widget.currentIndex] =
|
||||||
|
!countersHelper.saveButtonPopular[widget.currentIndex];
|
||||||
|
return utils.showToast(data.message);
|
||||||
|
} else {
|
||||||
|
return utils.showToast(data.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pinunpinUser(int userid) async {
|
||||||
|
Map<String, dynamic> updata = {
|
||||||
|
"pin_iam_principal_xid": userid,
|
||||||
|
};
|
||||||
|
final data = await SidebarTags().postUserpin(updata);
|
||||||
|
if (data.status == ResponseStatus.SUCCESS) {
|
||||||
|
countersHelper.pinButtonPopular[widget.currentIndex] =
|
||||||
|
!countersHelper.pinButtonPopular[widget.currentIndex];
|
||||||
|
countersHelper.updateFeedsPage.value =
|
||||||
|
!countersHelper.updateFeedsPage.value;
|
||||||
|
return utils.showToast(data.message);
|
||||||
|
} else {
|
||||||
|
return utils.showToast(data.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
var imgUrl = widget.commonObj.image!
|
||||||
|
.split(
|
||||||
|
"https://regroup.betadelivery.com/storage/app/public/uploads/post_image/")
|
||||||
|
.last;
|
||||||
|
|
||||||
|
return ConstrainedBox(
|
||||||
|
constraints: BoxConstraints(minHeight: Get.width < 400 ? 750 : 770),
|
||||||
|
child: commonGlassUI(
|
||||||
|
width: double.infinity,
|
||||||
|
height: 600.h,
|
||||||
|
mainOpacity: 1,
|
||||||
|
borderRadius: BorderRadius.circular(1),
|
||||||
|
customWidget: Column(
|
||||||
|
children: [
|
||||||
|
sizedBoxHeight(25.h),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
CircleAvatar(
|
||||||
|
backgroundImage:
|
||||||
|
widget.commonObj.iamPrincipal?.profilePhoto != null
|
||||||
|
? NetworkImage(widget.commonObj.iamPrincipal!
|
||||||
|
.profilePhoto!) as ImageProvider<Object>
|
||||||
|
: const AssetImage(
|
||||||
|
'assets/images/default_profile.png')
|
||||||
|
as ImageProvider<Object>,
|
||||||
|
radius: 25.r,
|
||||||
|
),
|
||||||
|
sizedBoxWidth(12.w),
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
text16w400_FCFCFC(
|
||||||
|
widget.commonObj.iamPrincipal!.fullName ??
|
||||||
|
"Regroup"),
|
||||||
|
sizedBoxWidth(10.w),
|
||||||
|
widget.coachbool == true
|
||||||
|
? Container(
|
||||||
|
width: 75.w,
|
||||||
|
height: 25.h,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(
|
||||||
|
color: const Color(0xFFD90B2E),
|
||||||
|
width: 1.w,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(5.r),
|
||||||
|
),
|
||||||
|
child: Center(
|
||||||
|
child: text12w400_FCFCFC("Coach")),
|
||||||
|
)
|
||||||
|
: const SizedBox(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
sizedBoxHeight(5.h),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Image.asset(
|
||||||
|
'assets/images/png/community 1 (traced).png',
|
||||||
|
height: 14.w,
|
||||||
|
width: 14.w,
|
||||||
|
),
|
||||||
|
sizedBoxWidth(7.w),
|
||||||
|
text12w400_FCFCFC(
|
||||||
|
widget.commonObj.community!.communityName ??
|
||||||
|
""),
|
||||||
|
sizedBoxWidth(7.w),
|
||||||
|
Icon(
|
||||||
|
Icons.circle,
|
||||||
|
color: const Color(0xFFFCFCFC),
|
||||||
|
size: 4.sp,
|
||||||
|
),
|
||||||
|
sizedBoxWidth(6.w),
|
||||||
|
text12w400_FCFCFC(widget.createAt!),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const Spacer(),
|
||||||
|
PopupMenuButton(
|
||||||
|
surfaceTintColor: const Color(0xFF222935),
|
||||||
|
constraints: BoxConstraints.tightFor(width: 176.w),
|
||||||
|
offset: const Offset(0, 50),
|
||||||
|
color: const Color(0xFF222935),
|
||||||
|
tooltip: "",
|
||||||
|
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
|
||||||
|
PopupMenuItem(
|
||||||
|
onTap: () {},
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Report Post',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.sp,
|
||||||
|
color: Colors.white,
|
||||||
|
fontWeight: FontWeight.w800,
|
||||||
|
fontFamily: "Nunito Sans",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const Spacer(),
|
||||||
|
Image.asset(
|
||||||
|
"assets/images/png/Vector (5).png",
|
||||||
|
height: 15.h,
|
||||||
|
width: 15.w,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const PopupMenuDivider(),
|
||||||
|
PopupMenuItem(
|
||||||
|
onTap: () {},
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Share post',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.sp,
|
||||||
|
color: Colors.white,
|
||||||
|
fontWeight: FontWeight.w800,
|
||||||
|
fontFamily: "Nunito Sans",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const Spacer(),
|
||||||
|
Image.asset(
|
||||||
|
"assets/images/png/share.png",
|
||||||
|
height: 20.h,
|
||||||
|
width: 20.w,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const PopupMenuDivider(),
|
||||||
|
PopupMenuItem(
|
||||||
|
onTap: () {
|
||||||
|
pinunpinUser(widget.commonObj.iamPrincipal!.id!);
|
||||||
|
},
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
countersHelper
|
||||||
|
.pinButtonPopular[widget.currentIndex]
|
||||||
|
? Text(
|
||||||
|
'Unpin',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.sp,
|
||||||
|
color: Colors.white,
|
||||||
|
fontWeight: FontWeight.w800,
|
||||||
|
fontFamily: "Nunito Sans",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: Text(
|
||||||
|
'Pin',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.sp,
|
||||||
|
color: Colors.white,
|
||||||
|
fontWeight: FontWeight.w800,
|
||||||
|
fontFamily: "Nunito Sans",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const Spacer(),
|
||||||
|
countersHelper
|
||||||
|
.pinButtonPopular[widget.currentIndex]
|
||||||
|
? Image.asset(
|
||||||
|
"assets/images/png/PinnedIcon.png",
|
||||||
|
height: 25.h,
|
||||||
|
width: 25.w,
|
||||||
|
)
|
||||||
|
: Image.asset(
|
||||||
|
"assets/images/png/f7_pin-fill (2).png",
|
||||||
|
height: 25.h,
|
||||||
|
width: 25.w,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/images/png/Group 1000004071.png',
|
||||||
|
width: 16.w,
|
||||||
|
height: 18.h,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxWidth(5.w)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxHeight(20.h),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () async {
|
||||||
|
if (widget.showCommentButton) {
|
||||||
|
bool result = await Get.toNamed(RouteName.postdetailsScreen,
|
||||||
|
arguments: {
|
||||||
|
'postId': widget.commonObj.id,
|
||||||
|
'tagsList': widget.tags,
|
||||||
|
'created_at': widget.createAt,
|
||||||
|
'commonObj': widget.commonObj,
|
||||||
|
'fromWhichTab': widget.forWhichTab,
|
||||||
|
'reactions': widget.reactions,
|
||||||
|
'selectedReactions': widget.selectedReactions,
|
||||||
|
'currentIndex': widget.currentIndex
|
||||||
|
});
|
||||||
|
if (result) {
|
||||||
|
setState(() {});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: SizedBox(
|
||||||
|
height: 360,
|
||||||
|
width: double.infinity,
|
||||||
|
child: Image.network(
|
||||||
|
widget.commonObj.image!,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
errorBuilder: (context, error, stackTrace) {
|
||||||
|
return const Center(
|
||||||
|
child: Icon(Icons.error),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxHeight(20.h),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||||
|
child: Column(children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 30.h,
|
||||||
|
width: double.infinity,
|
||||||
|
child: ListView.builder(
|
||||||
|
scrollDirection: Axis.horizontal,
|
||||||
|
shrinkWrap: true,
|
||||||
|
itemCount: widget.tags.length,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
var manageTag = widget.tags[index];
|
||||||
|
return Padding(
|
||||||
|
padding: EdgeInsets.only(right: 12.w),
|
||||||
|
child: GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
Get.toNamed(RouteName.tagdetailscreen,
|
||||||
|
arguments: {
|
||||||
|
'tagid': manageTag.id,
|
||||||
|
'tagname': manageTag.name,
|
||||||
|
'ispinnedtag': manageTag.isPinned,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
commonContainer(
|
||||||
|
width: 130.w,
|
||||||
|
height: 30.h,
|
||||||
|
borderRadius: BorderRadius.circular(30.r),
|
||||||
|
borderColor: const Color(0xFFD90B2E),
|
||||||
|
opacity1: 0.04,
|
||||||
|
opacity2: 0.05,
|
||||||
|
customWidget: Padding(
|
||||||
|
padding:
|
||||||
|
EdgeInsets.symmetric(horizontal: 10.w),
|
||||||
|
child: Center(
|
||||||
|
child: text14w400_FCFCFC(
|
||||||
|
'#${manageTag.name}',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxHeight(20.h),
|
||||||
|
SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
child: Text(
|
||||||
|
widget.commonObj.caption ?? "",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.sp,
|
||||||
|
color: Colors.white,
|
||||||
|
fontFamily: "Nunito Sans",
|
||||||
|
),
|
||||||
|
maxLines: 2, // Set the maximum number of lines
|
||||||
|
overflow: TextOverflow
|
||||||
|
.ellipsis, // Truncate the text with an ellipsis
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// sizedBoxHeight(20.h),
|
||||||
|
Row(children: [
|
||||||
|
Obx(
|
||||||
|
() => InkWell(
|
||||||
|
onTap: () {
|
||||||
|
Get.toNamed(RouteName.reactionview, arguments: {
|
||||||
|
'postId': widget.commonObj.id,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: stackReaction(
|
||||||
|
number: countersHelper
|
||||||
|
.likesCounterPopular[widget.currentIndex]
|
||||||
|
.toString(),
|
||||||
|
containerImages: [
|
||||||
|
'assets/images/png/f7_hand-thumbsup.png',
|
||||||
|
'assets/images/png/heart 2.png',
|
||||||
|
'assets/images/png/party-popper 2.png'
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const Spacer(),
|
||||||
|
commonContainer(
|
||||||
|
width: 30.w,
|
||||||
|
height: 30.h,
|
||||||
|
borderColor: const Color(0xFF434A53),
|
||||||
|
borderwidth: 0.43,
|
||||||
|
opacity1: 0.2,
|
||||||
|
opacity2: 0.2,
|
||||||
|
boxShape: BoxShape.circle,
|
||||||
|
customWidget: Center(
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/images/png/Frame 1000004088.png',
|
||||||
|
height: 13.h,
|
||||||
|
width: 13.w,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxWidth(12.w),
|
||||||
|
Obx(
|
||||||
|
() => text14w400_FCFCFC(countersHelper
|
||||||
|
.commentsCounterPopular[widget.currentIndex]
|
||||||
|
.toString()),
|
||||||
|
),
|
||||||
|
sizedBoxWidth(20.w),
|
||||||
|
commonContainer(
|
||||||
|
width: 30.w,
|
||||||
|
height: 30.h,
|
||||||
|
borderColor: const Color(0xFF434A53),
|
||||||
|
borderwidth: 0.43,
|
||||||
|
opacity1: 0.2,
|
||||||
|
opacity2: 0.2,
|
||||||
|
boxShape: BoxShape.circle,
|
||||||
|
customWidget: Center(
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/images/png/Vector (1).png',
|
||||||
|
height: 12.h,
|
||||||
|
width: 12.w,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxWidth(12.w),
|
||||||
|
Obx(
|
||||||
|
() => text14w400_FCFCFC(countersHelper
|
||||||
|
.savePostCounterPopular[widget.currentIndex]
|
||||||
|
.toString()),
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
sizedBoxHeight(12.h),
|
||||||
|
commonDivider(),
|
||||||
|
sizedBoxHeight(12.h),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
ReactionButton<String>(
|
||||||
|
onReactionChanged: (reaction) async {
|
||||||
|
_handleReactionChange(reaction);
|
||||||
|
},
|
||||||
|
reactions: widget.reactions
|
||||||
|
.map((reaction) => Reaction<String>(
|
||||||
|
value: reaction.id.toString(),
|
||||||
|
previewIcon: Image.network(reaction.image,
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
fit: BoxFit.cover),
|
||||||
|
icon: Image.network(reaction.image,
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
fit: BoxFit.cover),
|
||||||
|
))
|
||||||
|
.toList(),
|
||||||
|
selectedReaction: widget.selectedReactions[
|
||||||
|
widget.commonObj.id] !=
|
||||||
|
null
|
||||||
|
? Reaction<String>(
|
||||||
|
value: widget
|
||||||
|
.selectedReactions[widget.commonObj.id]!
|
||||||
|
.id
|
||||||
|
.toString(),
|
||||||
|
icon: Image.network(
|
||||||
|
widget
|
||||||
|
.selectedReactions[
|
||||||
|
widget.commonObj.id]!
|
||||||
|
.image,
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
boxColor: Colors.white,
|
||||||
|
boxElevation: 9,
|
||||||
|
boxRadius: 30,
|
||||||
|
itemsSpacing: 20,
|
||||||
|
itemScale: 0.3,
|
||||||
|
itemSize: const Size(30, 30),
|
||||||
|
boxPadding: const EdgeInsets.all(8),
|
||||||
|
boxAnimationDuration:
|
||||||
|
const Duration(milliseconds: 200),
|
||||||
|
itemAnimationDuration:
|
||||||
|
const Duration(milliseconds: 500),
|
||||||
|
hoverDuration: const Duration(milliseconds: 700),
|
||||||
|
child: widget.selectedReactions[
|
||||||
|
widget.commonObj.id] !=
|
||||||
|
null
|
||||||
|
? Image.network(
|
||||||
|
widget
|
||||||
|
.selectedReactions[widget.commonObj.id]!
|
||||||
|
.image,
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
)
|
||||||
|
: Image.asset(
|
||||||
|
'assets/images/png/uiw_like-o.png',
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxHeight(8.h),
|
||||||
|
text11w400_FCFCFC('Like'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
widget.showCommentButton
|
||||||
|
? GestureDetector(
|
||||||
|
onTap: () async {
|
||||||
|
bool result = await Get.toNamed(
|
||||||
|
RouteName.postdetailsScreen,
|
||||||
|
arguments: {
|
||||||
|
'postId': widget.commonObj.id,
|
||||||
|
'tagsList': widget.tags,
|
||||||
|
'created_at': widget.createAt,
|
||||||
|
'commonObj': widget.commonObj,
|
||||||
|
'fromWhichTab': widget.forWhichTab,
|
||||||
|
'reactions': widget.reactions,
|
||||||
|
'selectedReactions':
|
||||||
|
widget.selectedReactions,
|
||||||
|
'currentIndex': widget.currentIndex
|
||||||
|
});
|
||||||
|
if (result) {
|
||||||
|
setState(() {});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Image.asset(
|
||||||
|
'assets/images/png/Frame 1000004088.png',
|
||||||
|
height: 19.h,
|
||||||
|
width: 19.w,
|
||||||
|
),
|
||||||
|
sizedBoxHeight(8.h),
|
||||||
|
text11w400_FCFCFC('Comment')
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: SizedBox(),
|
||||||
|
Obx(
|
||||||
|
() => Column(
|
||||||
|
//here
|
||||||
|
children: [
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () async =>
|
||||||
|
await saveunsavepost(widget.commonObj.id!),
|
||||||
|
child: countersHelper
|
||||||
|
.saveButtonPopular[widget.currentIndex]
|
||||||
|
? Image.asset(
|
||||||
|
'assets/images/png/postSaved.png',
|
||||||
|
height: 19.h,
|
||||||
|
width: 19.w,
|
||||||
|
)
|
||||||
|
: Image.asset(
|
||||||
|
'assets/images/png/Frame 1000004089.png',
|
||||||
|
height: 19.h,
|
||||||
|
width: 19.w,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxHeight(8.h),
|
||||||
|
text11w400_FCFCFC('Save')
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
sizedBoxHeight(12.h),
|
||||||
|
commonDivider(),
|
||||||
|
sizedBoxHeight(12.h),
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,8 @@ import 'package:flutter/foundation.dart';
|
|||||||
import 'package:get/get.dart' hide Response;
|
import 'package:get/get.dart' hide Response;
|
||||||
import 'package:regroup/Global.dart';
|
import 'package:regroup/Global.dart';
|
||||||
import 'package:regroup/Common/base_manager.dart';
|
import 'package:regroup/Common/base_manager.dart';
|
||||||
|
import 'package:regroup/Utils/dialogs.dart';
|
||||||
|
import 'package:regroup/resources/routes/route_name.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
@@ -16,9 +18,8 @@ class NetworkApiServices {
|
|||||||
Dio dio = Dio();
|
Dio dio = Dio();
|
||||||
final controllerEntryPoint = Get.put(EntryPointController());
|
final controllerEntryPoint = Get.put(EntryPointController());
|
||||||
|
|
||||||
String basicAuth = 'Basic ' +
|
String basicAuth =
|
||||||
base64.encode(
|
'Basic ${base64.encode(utf8.encode('RegroupUserName:71%@L%es^bUX94`J9XT*@bh,._WWM{\$%^^&&'))}';
|
||||||
utf8.encode('RegroupUserName:71%@L%es^bUX94`J9XT*@bh,._WWM{\$%^^&&'));
|
|
||||||
|
|
||||||
Future<ResponseData> getApi(String url, {bool optionalpar = false}) async {
|
Future<ResponseData> getApi(String url, {bool optionalpar = false}) async {
|
||||||
if (kDebugMode) {
|
if (kDebugMode) {
|
||||||
@@ -27,7 +28,6 @@ class NetworkApiServices {
|
|||||||
Response response;
|
Response response;
|
||||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||||
token = prefs.getString('access-token');
|
token = prefs.getString('access-token');
|
||||||
print("url is $url");
|
|
||||||
log(token.toString());
|
log(token.toString());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -52,7 +52,40 @@ class NetworkApiServices {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
} on Exception catch (e) {
|
} on Exception catch (e) {
|
||||||
log(e.toString());
|
// log(e.toString());
|
||||||
|
if (e is DioException) {
|
||||||
|
log(e.response.toString());
|
||||||
|
if (e.response == null) {
|
||||||
|
return ResponseData<dynamic>(
|
||||||
|
'Oops something Went Wrong, Please try again!',
|
||||||
|
ResponseStatus.FAILED,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (e.response!.statusCode == 401) {
|
||||||
|
if (e.response!.data['message'] == 'Invalid token') {
|
||||||
|
// prefs.remove('access-token');
|
||||||
|
// await prefs.clear();
|
||||||
|
// Get.offNamed(RouteName.loginScreen);
|
||||||
|
utils.showToast('Please login again');
|
||||||
|
} else {
|
||||||
|
return ResponseData<dynamic>(
|
||||||
|
'Oops something Went Wrong, Please try again!',
|
||||||
|
ResponseStatus.FAILED,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (e.response!.statusCode == 403) {
|
||||||
|
if (e.response!.data['message'] is List) {
|
||||||
|
return ResponseData<dynamic>(
|
||||||
|
e.response!.data['message'][0]!, ResponseStatus.FAILED,
|
||||||
|
data: e.response!.data);
|
||||||
|
} else {
|
||||||
|
return ResponseData<dynamic>(
|
||||||
|
e.response!.data['message'], ResponseStatus.FAILED,
|
||||||
|
data: e.response!.data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return ResponseData<dynamic>(
|
return ResponseData<dynamic>(
|
||||||
'Oops something Went Wrong', ResponseStatus.FAILED);
|
'Oops something Went Wrong', ResponseStatus.FAILED);
|
||||||
}
|
}
|
||||||
@@ -190,20 +223,39 @@ class NetworkApiServices {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (e.response!.statusCode == 401) {
|
if (e.response!.statusCode == 401) {
|
||||||
prefs.remove('token');
|
if (e.response!.data['message'] == 'Invalid token') {
|
||||||
prefs.remove('refreshToken');
|
prefs.remove('access-token');
|
||||||
// Get.toNamed(RouteName.login);
|
await prefs.clear();
|
||||||
|
Get.offNamed(RouteName.loginScreen);
|
||||||
|
utils.showToast('Please login again');
|
||||||
|
} else {
|
||||||
return ResponseData<dynamic>(
|
return ResponseData<dynamic>(
|
||||||
'Oops something Went Wrong, Please try again!',
|
'Oops something Went Wrong, Please try again!',
|
||||||
ResponseStatus.FAILED,
|
ResponseStatus.FAILED,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// Get.toNamed(RouteName.login);
|
||||||
|
// return ResponseData<dynamic>(
|
||||||
|
// 'Oops something Went Wrong, Please try again!',
|
||||||
|
// ResponseStatus.FAILED,
|
||||||
|
// );
|
||||||
|
}
|
||||||
if (e.response!.statusCode == 403) {
|
if (e.response!.statusCode == 403) {
|
||||||
if (e.response!.data['message'] is List) {
|
if (e.response!.data['message'] is List) {
|
||||||
return ResponseData<dynamic>(
|
return ResponseData<dynamic>(
|
||||||
e.response!.data['message'][0]!, ResponseStatus.FAILED,
|
e.response!.data['message'][0]!, ResponseStatus.FAILED,
|
||||||
data: e.response!.data);
|
data: e.response!.data);
|
||||||
} else {
|
}
|
||||||
|
// else if (e.response!.data['message']
|
||||||
|
// // ['name'] is List
|
||||||
|
// ) {
|
||||||
|
// return ResponseData<dynamic>(
|
||||||
|
// // e.response!.data['message']['name'][0]!, ResponseStatus.FAILED,
|
||||||
|
// e.response!.data['message'], ResponseStatus.FAILED,
|
||||||
|
|
||||||
|
// data: e.response!.data);
|
||||||
|
// }
|
||||||
|
else {
|
||||||
return ResponseData<dynamic>(
|
return ResponseData<dynamic>(
|
||||||
e.response!.data['message'], ResponseStatus.FAILED,
|
e.response!.data['message'], ResponseStatus.FAILED,
|
||||||
data: e.response!.data);
|
data: e.response!.data);
|
||||||
|
|||||||
@@ -1,487 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_reaction_button/flutter_reaction_button.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/CommonTabBar.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/Community/Community.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:regroup/resources/routes/route_name.dart';
|
|
||||||
|
|
||||||
class CycleScreen extends StatefulWidget {
|
|
||||||
const CycleScreen({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<CycleScreen> createState() => _CycleScreenState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _CycleScreenState extends State<CycleScreen> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Cycle",
|
|
||||||
customActionWidget: Image.asset(
|
|
||||||
"assets/images/png/sidemenu/f7_pin-fill.png",
|
|
||||||
height: 26.h,
|
|
||||||
width: 26.w,
|
|
||||||
)),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
), Column(children: [
|
|
||||||
sizedBoxHeight(10.h),
|
|
||||||
DefaultTabController(
|
|
||||||
length: 2,
|
|
||||||
// initialIndex: selectedIndex.value,
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
CommonTabBar(tabs: const [
|
|
||||||
Tab(
|
|
||||||
text: 'Popular',
|
|
||||||
),
|
|
||||||
Tab(
|
|
||||||
text: 'Latest',
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
SizedBox(
|
|
||||||
height: 670.h,
|
|
||||||
child: TabBarView(
|
|
||||||
children: [
|
|
||||||
CyclepopularTab(),
|
|
||||||
CyclelatestTab(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
))
|
|
||||||
])
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget CyclepopularTab() {
|
|
||||||
return SingleChildScrollView(
|
|
||||||
child: Column(children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
normalcardtile(
|
|
||||||
profileImg: 'assets/images/png/Ellipse 52.png',
|
|
||||||
title: 'Ryan Dorwat',
|
|
||||||
mainImg: 'assets/images/png/img322.png',
|
|
||||||
containerTitle: [
|
|
||||||
'Football',
|
|
||||||
'Teams player',
|
|
||||||
'Events',
|
|
||||||
'Marathon',
|
|
||||||
'Events'
|
|
||||||
]),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
normalcardtile(
|
|
||||||
profileImg: 'assets/images/png/Ellipse 43.png',
|
|
||||||
title: 'Edward Hackket',
|
|
||||||
mainImg: 'assets/images/png/Rectangle 24.png',
|
|
||||||
containerTitle: [
|
|
||||||
'Cycle',
|
|
||||||
'Marathon',
|
|
||||||
'Events',
|
|
||||||
'Marathon',
|
|
||||||
'Events'
|
|
||||||
]),
|
|
||||||
]),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget CyclelatestTab() {
|
|
||||||
return SingleChildScrollView(
|
|
||||||
child: Column(children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
normalcardtile(
|
|
||||||
profileImg: 'assets/images/png/Ellipse 43.png',
|
|
||||||
title: 'Edward Hackket',
|
|
||||||
mainImg: 'assets/images/png/Rectangle 24.png',
|
|
||||||
containerTitle: [
|
|
||||||
'Cycle',
|
|
||||||
'Marathon',
|
|
||||||
'Events',
|
|
||||||
'Marathon',
|
|
||||||
'Events'
|
|
||||||
]),
|
|
||||||
]),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget normalcardtile({
|
|
||||||
required String profileImg,
|
|
||||||
required String title,
|
|
||||||
required String mainImg,
|
|
||||||
required List<String> containerTitle,
|
|
||||||
}) {
|
|
||||||
var mainImage = 'assets/images/png/uiw_like-o.png'.obs;
|
|
||||||
void updateImage(String reaction) {
|
|
||||||
if (reaction == 'like') {
|
|
||||||
mainImage.value = 'assets/images/png/f7_hand-thumbsup.png';
|
|
||||||
} else if (reaction == 'heart') {
|
|
||||||
mainImage.value = 'assets/images/png/heart 2.png';
|
|
||||||
} else if (reaction == 'party') {
|
|
||||||
mainImage.value = 'assets/images/png/party-popper 2.png';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return commonGlassContainer(
|
|
||||||
width: double.infinity,
|
|
||||||
height: 570.h,
|
|
||||||
border: 0,
|
|
||||||
borderradius: 1,
|
|
||||||
customWidget: Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
CircleAvatar(
|
|
||||||
foregroundImage: AssetImage(profileImg),
|
|
||||||
radius: 25.r,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text16w400_FCFCFC(title),
|
|
||||||
sizedBoxHeight(5.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/community 1 (traced).png',
|
|
||||||
height: 14.w,
|
|
||||||
width: 14.w,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(7.w),
|
|
||||||
text12w400_FCFCFC('Active alliance network'),
|
|
||||||
sizedBoxWidth(7.w),
|
|
||||||
Icon(
|
|
||||||
Icons.circle,
|
|
||||||
color: Color(0xFFFCFCFC),
|
|
||||||
size: 4.sp,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(6.w),
|
|
||||||
text12w400_FCFCFC('1 Hour ago'),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
PopupMenuButton(
|
|
||||||
surfaceTintColor: Color(0xFF222935),
|
|
||||||
constraints: BoxConstraints.tightFor(width: 176.w),
|
|
||||||
offset: Offset(0, 50),
|
|
||||||
color: Color(0xFF222935),
|
|
||||||
tooltip: "",
|
|
||||||
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Report Post',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/Vector (5).png",
|
|
||||||
height: 15.h,
|
|
||||||
width: 15.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Share post',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/share.png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Pin',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/f7_pin-fill (2).png",
|
|
||||||
height: 25.h,
|
|
||||||
width: 25.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Group 1000004071.png',
|
|
||||||
width: 16.w,
|
|
||||||
height: 18.h,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(5.w)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.postdetailsScreen);
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 163.h,
|
|
||||||
width: double.infinity,
|
|
||||||
child: Image.asset(
|
|
||||||
mainImg,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Column(children: [
|
|
||||||
SizedBox(
|
|
||||||
height: 30.h,
|
|
||||||
child: ListView.builder(
|
|
||||||
scrollDirection: Axis.horizontal,
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: containerTitle.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.only(right: 12.w),
|
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.cyclescreen);
|
|
||||||
},
|
|
||||||
child: containertile(text: containerTitle[index])),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
text16w400_FCFCFC(
|
|
||||||
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s . . ."),
|
|
||||||
Row(children: [
|
|
||||||
InkWell(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.reactionview);
|
|
||||||
},
|
|
||||||
child: stackReaction(number: '20', containerImages: [
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png',
|
|
||||||
'assets/images/png/heart 2.png',
|
|
||||||
'assets/images/png/party-popper 2.png'
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
commonGlassContainer(
|
|
||||||
border: 0.43,
|
|
||||||
width: 30.w,
|
|
||||||
height: 30.h,
|
|
||||||
opacity1: 0.05,
|
|
||||||
opacity2: 0.06,
|
|
||||||
borderradius: 100,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Frame 1000004088.png',
|
|
||||||
height: 13.h,
|
|
||||||
width: 13.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text14w400_FCFCFC('20'),
|
|
||||||
sizedBoxWidth(20.w),
|
|
||||||
commonGlassContainer(
|
|
||||||
border: 0.43,
|
|
||||||
width: 30.w,
|
|
||||||
height: 30.h,
|
|
||||||
borderradius: 100,
|
|
||||||
opacity1: 0.05,
|
|
||||||
opacity2: 0.06,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Vector (1).png',
|
|
||||||
height: 12.h,
|
|
||||||
width: 12.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text14w400_FCFCFC('10'),
|
|
||||||
]),
|
|
||||||
sizedBoxHeight(12.h),
|
|
||||||
commonDivider(),
|
|
||||||
sizedBoxHeight(12.h),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
children: [
|
|
||||||
Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Obx(() {
|
|
||||||
return ReactionButton<String>(
|
|
||||||
onReactionChanged: (reaction) {
|
|
||||||
updateImage(reaction?.value ?? 'like');
|
|
||||||
debugPrint('Selected value: ${reaction?.value}');
|
|
||||||
},
|
|
||||||
reactions: <Reaction<String>?>[
|
|
||||||
Reaction<String>(
|
|
||||||
value: 'like',
|
|
||||||
previewIcon: _buildReactionsPreviewIcon(
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png'),
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png'),
|
|
||||||
),
|
|
||||||
Reaction<String>(
|
|
||||||
value: 'heart',
|
|
||||||
previewIcon: _buildReactionsPreviewIcon(
|
|
||||||
'assets/images/png/heart 2.png'),
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/heart 2.png'),
|
|
||||||
),
|
|
||||||
Reaction<String>(
|
|
||||||
value: 'party',
|
|
||||||
previewIcon: _buildReactionsPreviewIcon(
|
|
||||||
'assets/images/png/party-popper 2.png'),
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/party-popper 2.png'),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
selectedReaction: Reaction<String>(
|
|
||||||
value: 'like',
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png'),
|
|
||||||
),
|
|
||||||
boxColor: Colors.white,
|
|
||||||
boxElevation: 9,
|
|
||||||
boxRadius: 30,
|
|
||||||
itemsSpacing: 8,
|
|
||||||
itemScale: 0.4,
|
|
||||||
itemSize: Size(45, 45),
|
|
||||||
boxPadding: EdgeInsets.all(8),
|
|
||||||
boxAnimationDuration: Duration(milliseconds: 200),
|
|
||||||
itemAnimationDuration: Duration(milliseconds: 500),
|
|
||||||
hoverDuration: Duration(milliseconds: 700),
|
|
||||||
// toggle: false,
|
|
||||||
|
|
||||||
child: _buildReactionsIcon(mainImage.value),
|
|
||||||
);
|
|
||||||
})
|
|
||||||
],
|
|
||||||
),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.postdetailsScreen);
|
|
||||||
},
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/Frame 1000004088.png',
|
|
||||||
height: 19.h,
|
|
||||||
width: 19.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
text11w400_FCFCFC('Comment')
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/Frame 1000004089.png',
|
|
||||||
height: 19.h,
|
|
||||||
width: 19.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
text11w400_FCFCFC('Save')
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(12.h),
|
|
||||||
commonDivider(),
|
|
||||||
sizedBoxHeight(12.h),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildReactionsPreviewIcon(String assetPath) {
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.all(8.0),
|
|
||||||
child: Image.asset(
|
|
||||||
assetPath,
|
|
||||||
height: 40.h,
|
|
||||||
width: 40.w,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildReactionsIcon(String assetPath) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
assetPath,
|
|
||||||
height: 19.h,
|
|
||||||
width: 19.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
text11w400_FCFCFC('Like')
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
class CommunityListModel {
|
||||||
|
String? status;
|
||||||
|
int? statusCode;
|
||||||
|
String? message;
|
||||||
|
List<Data>? data;
|
||||||
|
|
||||||
|
CommunityListModel({this.status, this.statusCode, this.message, this.data});
|
||||||
|
|
||||||
|
CommunityListModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
status = json['status'];
|
||||||
|
statusCode = json['status_code'];
|
||||||
|
message = json['message'];
|
||||||
|
if (json['data'] != null) {
|
||||||
|
data = <Data>[];
|
||||||
|
json['data'].forEach((v) {
|
||||||
|
data!.add(new Data.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['status'] = this.status;
|
||||||
|
data['status_code'] = this.statusCode;
|
||||||
|
data['message'] = this.message;
|
||||||
|
if (this.data != null) {
|
||||||
|
data['data'] = this.data!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Data {
|
||||||
|
int? id;
|
||||||
|
int? iamPrincipalXid;
|
||||||
|
int? manageCommunityXid;
|
||||||
|
Community? community;
|
||||||
|
|
||||||
|
Data(
|
||||||
|
{this.id, this.iamPrincipalXid, this.manageCommunityXid, this.community});
|
||||||
|
|
||||||
|
Data.fromJson(Map<String, dynamic> json) {
|
||||||
|
id = json['id'];
|
||||||
|
iamPrincipalXid = json['iam_principal_xid'];
|
||||||
|
manageCommunityXid = json['manage_community_xid'];
|
||||||
|
community = json['community'] != null
|
||||||
|
? new Community.fromJson(json['community'])
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['id'] = this.id;
|
||||||
|
data['iam_principal_xid'] = this.iamPrincipalXid;
|
||||||
|
data['manage_community_xid'] = this.manageCommunityXid;
|
||||||
|
if (this.community != null) {
|
||||||
|
data['community'] = this.community!.toJson();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Community {
|
||||||
|
int? id;
|
||||||
|
String? communityName;
|
||||||
|
String? communityProfilePhoto;
|
||||||
|
|
||||||
|
Community({this.id, this.communityName, this.communityProfilePhoto});
|
||||||
|
|
||||||
|
Community.fromJson(Map<String, dynamic> json) {
|
||||||
|
id = json['id'];
|
||||||
|
communityName = json['community_name'];
|
||||||
|
communityProfilePhoto = json['community_profile_photo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['id'] = this.id;
|
||||||
|
data['community_name'] = this.communityName;
|
||||||
|
data['community_profile_photo'] = this.communityProfilePhoto;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
class PopulartagsListModel {
|
||||||
|
String? status;
|
||||||
|
int? statusCode;
|
||||||
|
String? message;
|
||||||
|
List<Data>? data;
|
||||||
|
|
||||||
|
PopulartagsListModel({this.status, this.statusCode, this.message, this.data});
|
||||||
|
|
||||||
|
PopulartagsListModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
status = json['status'];
|
||||||
|
statusCode = json['status_code'];
|
||||||
|
message = json['message'];
|
||||||
|
if (json['data'] != null) {
|
||||||
|
data = <Data>[];
|
||||||
|
json['data'].forEach((v) {
|
||||||
|
data!.add(new Data.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['status'] = this.status;
|
||||||
|
data['status_code'] = this.statusCode;
|
||||||
|
data['message'] = this.message;
|
||||||
|
if (this.data != null) {
|
||||||
|
data['data'] = this.data!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Data {
|
||||||
|
int? id;
|
||||||
|
String? name;
|
||||||
|
int? tagPopularity;
|
||||||
|
|
||||||
|
Data({this.id, this.name, this.tagPopularity});
|
||||||
|
|
||||||
|
Data.fromJson(Map<String, dynamic> json) {
|
||||||
|
id = json['id'];
|
||||||
|
name = json['name'];
|
||||||
|
tagPopularity = json['tag_popularity'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['id'] = this.id;
|
||||||
|
data['name'] = this.name;
|
||||||
|
data['tag_popularity'] = this.tagPopularity;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
class TagsMainModel {
|
||||||
|
String? status;
|
||||||
|
int? statusCode;
|
||||||
|
String? message;
|
||||||
|
List<Data>? data;
|
||||||
|
|
||||||
|
TagsMainModel({this.status, this.statusCode, this.message, this.data});
|
||||||
|
|
||||||
|
TagsMainModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
status = json['status'];
|
||||||
|
statusCode = json['status_code'];
|
||||||
|
message = json['message'];
|
||||||
|
if (json['data'] != null) {
|
||||||
|
data = <Data>[];
|
||||||
|
json['data'].forEach((v) {
|
||||||
|
data!.add(new Data.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['status'] = this.status;
|
||||||
|
data['status_code'] = this.statusCode;
|
||||||
|
data['message'] = this.message;
|
||||||
|
if (this.data != null) {
|
||||||
|
data['data'] = this.data!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Data {
|
||||||
|
int? id;
|
||||||
|
String? name;
|
||||||
|
int? tagPopularity;
|
||||||
|
|
||||||
|
Data({this.id, this.name, this.tagPopularity});
|
||||||
|
|
||||||
|
Data.fromJson(Map<String, dynamic> json) {
|
||||||
|
id = json['id'];
|
||||||
|
name = json['name'];
|
||||||
|
tagPopularity = json['tag_popularity'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['id'] = this.id;
|
||||||
|
data['name'] = this.name;
|
||||||
|
data['tag_popularity'] = this.tagPopularity;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,492 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_reaction_button/flutter_reaction_button.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:regroup/resources/routes/route_name.dart';
|
|
||||||
|
|
||||||
class PostDetailsScreen extends StatefulWidget {
|
|
||||||
const PostDetailsScreen({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<PostDetailsScreen> createState() => _PostDetailsScreenState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _PostDetailsScreenState extends State<PostDetailsScreen> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Post",
|
|
||||||
),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
postCards(
|
|
||||||
profileImg: 'assets/images/png/Ellipse 52.png',
|
|
||||||
title: 'Ryan Dorwat',
|
|
||||||
mainImg: 'assets/images/png/Rectangle 25.png',
|
|
||||||
containerTitle: [
|
|
||||||
'Football',
|
|
||||||
'Marathon',
|
|
||||||
'Events',
|
|
||||||
'Marathon',
|
|
||||||
'Events'
|
|
||||||
]),
|
|
||||||
sizedBoxHeight(35.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Column(children: [
|
|
||||||
Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
CircleAvatar(
|
|
||||||
radius: 20.r,
|
|
||||||
foregroundImage: AssetImage(
|
|
||||||
"assets/images/png/Ellipse 48.png",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(15.w),
|
|
||||||
Expanded(
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text12w400_FCFCFC_blur("Roger Saris"),
|
|
||||||
text14w400_FCFCFC(
|
|
||||||
"Lorem Ipsum has been the industry's standard dummy text 😍"),
|
|
||||||
text10w400_FCFCFC_blur("Reply. . . ")
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(50.h),
|
|
||||||
Align(
|
|
||||||
alignment: Alignment.bottomCenter,
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.only(top: 15, bottom: 15),
|
|
||||||
child: Row(
|
|
||||||
children: <Widget>[
|
|
||||||
Expanded(
|
|
||||||
child: CustomTextFormField(
|
|
||||||
hintText: "Add comment",
|
|
||||||
suffixIcon: Container(
|
|
||||||
height: 20.h,
|
|
||||||
width: 25.w,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/iconoir_send.png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 25.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
sizedBoxHeight(85.h)
|
|
||||||
]))
|
|
||||||
]))
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget postCards({
|
|
||||||
required String profileImg,
|
|
||||||
required String title,
|
|
||||||
required String mainImg,
|
|
||||||
required List<String> containerTitle,
|
|
||||||
}) {
|
|
||||||
var mainImage = 'assets/images/png/uiw_like-o.png'.obs;
|
|
||||||
void updateImage(String reaction) {
|
|
||||||
if (reaction == 'like') {
|
|
||||||
mainImage.value = 'assets/images/png/f7_hand-thumbsup.png';
|
|
||||||
} else if (reaction == 'heart') {
|
|
||||||
mainImage.value = 'assets/images/png/heart 2.png';
|
|
||||||
} else if (reaction == 'party') {
|
|
||||||
mainImage.value = 'assets/images/png/party-popper 2.png';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return commonGlassContainer(
|
|
||||||
width: double.infinity,
|
|
||||||
height: 570.h,
|
|
||||||
border: 0,
|
|
||||||
borderradius: 0,
|
|
||||||
customWidget: Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
CircleAvatar(
|
|
||||||
foregroundImage: AssetImage(profileImg),
|
|
||||||
radius: 25.r,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
Expanded(
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
text16w400_FCFCFC(title),
|
|
||||||
Spacer(),
|
|
||||||
commonGlassContainer(
|
|
||||||
width: 72.w,
|
|
||||||
height: 26.h,
|
|
||||||
borderradius: 5.r,
|
|
||||||
borderColor: Color(0xFFD90B2E),
|
|
||||||
customWidget:
|
|
||||||
Center(child: text14400white("Follow")),
|
|
||||||
border: 1),
|
|
||||||
sizedBoxWidth(6.w),
|
|
||||||
PopupMenuButton(
|
|
||||||
surfaceTintColor: Color(0xFF222935),
|
|
||||||
constraints:
|
|
||||||
BoxConstraints.tightFor(width: 176.w),
|
|
||||||
offset: Offset(0, 50),
|
|
||||||
color: Color(0xFF222935),
|
|
||||||
tooltip: "",
|
|
||||||
itemBuilder: (BuildContext context) =>
|
|
||||||
<PopupMenuEntry>[
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Report Post',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/Vector (5).png",
|
|
||||||
height: 15.h,
|
|
||||||
width: 15.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Share post',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/share.png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Pin',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/f7_pin-fill (2).png",
|
|
||||||
height: 25.h,
|
|
||||||
width: 25.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Group 1000004071.png',
|
|
||||||
width: 16.w,
|
|
||||||
height: 18.h,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(5.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/community 1 (traced).png',
|
|
||||||
height: 14.w,
|
|
||||||
width: 14.w,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(7.w),
|
|
||||||
text12w400_FCFCFC('Active alliance network'),
|
|
||||||
sizedBoxWidth(7.w),
|
|
||||||
Icon(
|
|
||||||
Icons.circle,
|
|
||||||
color: Color(0xFFFCFCFC),
|
|
||||||
size: 4.sp,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(6.w),
|
|
||||||
text12w400_FCFCFC('1 Hour ago'),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.postdetailsScreen);
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 163.h,
|
|
||||||
width: double.infinity,
|
|
||||||
child: Image.asset(
|
|
||||||
mainImg,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Column(children: [
|
|
||||||
SizedBox(
|
|
||||||
height: 30.h,
|
|
||||||
child: ListView.builder(
|
|
||||||
scrollDirection: Axis.horizontal,
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: containerTitle.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.only(right: 12.w),
|
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.cyclescreen);
|
|
||||||
},
|
|
||||||
child: containertile(text: containerTitle[index])),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
text16w400_FCFCFC(
|
|
||||||
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s . . ."),
|
|
||||||
Row(children: [
|
|
||||||
stackReaction(number: '20', containerImages: [
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png',
|
|
||||||
'assets/images/png/heart 2.png',
|
|
||||||
'assets/images/png/party-popper 2.png'
|
|
||||||
]),
|
|
||||||
Spacer(),
|
|
||||||
commonGlassContainer(
|
|
||||||
border: 0.9,
|
|
||||||
width: 30.w,
|
|
||||||
height: 30.h,
|
|
||||||
borderradius: 100,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Frame 1000004088.png',
|
|
||||||
height: 13.h,
|
|
||||||
width: 13.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text14w400_FCFCFC('20'),
|
|
||||||
sizedBoxWidth(20.w),
|
|
||||||
commonGlassContainer(
|
|
||||||
border: 0.9,
|
|
||||||
width: 30.w,
|
|
||||||
height: 30.h,
|
|
||||||
borderradius: 100,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Vector (1).png',
|
|
||||||
height: 12.h,
|
|
||||||
width: 12.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text14w400_FCFCFC('10'),
|
|
||||||
]),
|
|
||||||
sizedBoxHeight(12.h),
|
|
||||||
commonDivider(),
|
|
||||||
sizedBoxHeight(12.h),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
children: [
|
|
||||||
Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Obx(() {
|
|
||||||
return ReactionButton<String>(
|
|
||||||
onReactionChanged: (reaction) {
|
|
||||||
updateImage(reaction?.value ?? 'like');
|
|
||||||
debugPrint(
|
|
||||||
'Selected value: ${reaction?.value}');
|
|
||||||
},
|
|
||||||
reactions: <Reaction<String>?>[
|
|
||||||
Reaction<String>(
|
|
||||||
value: 'like',
|
|
||||||
previewIcon: _buildReactionsPreviewIcon(
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png'),
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png'),
|
|
||||||
),
|
|
||||||
Reaction<String>(
|
|
||||||
value: 'heart',
|
|
||||||
previewIcon: _buildReactionsPreviewIcon(
|
|
||||||
'assets/images/png/heart 2.png'),
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/heart 2.png'),
|
|
||||||
),
|
|
||||||
Reaction<String>(
|
|
||||||
value: 'party',
|
|
||||||
previewIcon: _buildReactionsPreviewIcon(
|
|
||||||
'assets/images/png/party-popper 2.png'),
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/party-popper 2.png'),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
selectedReaction: Reaction<String>(
|
|
||||||
value: 'like',
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png'),
|
|
||||||
),
|
|
||||||
boxColor: Colors.white,
|
|
||||||
boxElevation: 9,
|
|
||||||
boxRadius: 30,
|
|
||||||
itemsSpacing: 8,
|
|
||||||
itemScale: 0.4,
|
|
||||||
itemSize: Size(45, 45),
|
|
||||||
boxPadding: EdgeInsets.all(8),
|
|
||||||
boxAnimationDuration:
|
|
||||||
Duration(milliseconds: 200),
|
|
||||||
itemAnimationDuration:
|
|
||||||
Duration(milliseconds: 500),
|
|
||||||
hoverDuration: Duration(milliseconds: 700),
|
|
||||||
// toggle: false,
|
|
||||||
|
|
||||||
child: _buildReactionsIcon(mainImage.value),
|
|
||||||
);
|
|
||||||
})
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/Frame 1000004089.png',
|
|
||||||
height: 19.h,
|
|
||||||
width: 19.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
text11w400_FCFCFC('Save')
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(12.h),
|
|
||||||
commonDivider(),
|
|
||||||
sizedBoxHeight(12.h),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget containertile({required String text}) {
|
|
||||||
return commonGlassContainer(
|
|
||||||
border: 0.9,
|
|
||||||
width: 100.w,
|
|
||||||
height: 30.h,
|
|
||||||
borderradius: 30.r,
|
|
||||||
borderColor: Color(0xFFD90B2E),
|
|
||||||
customWidget: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 10.w),
|
|
||||||
child: Center(child: text14w400_FCFCFC(text)),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildReactionsPreviewIcon(String assetPath) {
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.all(8.0),
|
|
||||||
child: Image.asset(
|
|
||||||
assetPath,
|
|
||||||
height: 40.h,
|
|
||||||
width: 40.w,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildReactionsIcon(String assetPath) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
assetPath,
|
|
||||||
height: 19.h,
|
|
||||||
width: 19.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
text11w400_FCFCFC('Like')
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,316 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/CommonTabBar.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
|
|
||||||
class ReactionView extends StatefulWidget {
|
|
||||||
const ReactionView({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<ReactionView> createState() => _ReactionViewState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _ReactionViewState extends State<ReactionView> {
|
|
||||||
List allTabData = [
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg1.png",
|
|
||||||
"reactionimg": "assets/images/png/f7_hand-thumbsup.png",
|
|
||||||
"title": "Edward Hackket"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg2.png",
|
|
||||||
"reactionimg": "assets/images/png/heart 2.png",
|
|
||||||
"title": "Dulce Vaccaro"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg3.png",
|
|
||||||
"reactionimg": "assets/images/png/party-popper 2.png",
|
|
||||||
"title": "Edward Hackket"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg4.png",
|
|
||||||
"reactionimg": "assets/images/png/f7_hand-thumbsup.png",
|
|
||||||
"title": "Dulce Vaccaro"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Rectangle 65.png",
|
|
||||||
"reactionimg": "assets/images/png/heart 2.png",
|
|
||||||
"title": "Edward Hackket"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 43.png",
|
|
||||||
"reactionimg": "assets/images/png/party-popper 2.png",
|
|
||||||
"title": "Dulce Vaccaro"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg4.png",
|
|
||||||
"reactionimg": "assets/images/png/f7_hand-thumbsup.png",
|
|
||||||
"title": "Dulce Vaccaro"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg3.png",
|
|
||||||
"reactionimg": "assets/images/png/party-popper 2.png",
|
|
||||||
"title": "Edward Hackket"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg4.png",
|
|
||||||
"reactionimg": "assets/images/png/f7_hand-thumbsup.png",
|
|
||||||
"title": "Dulce Vaccaro"
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Post",
|
|
||||||
),
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
), Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(10.h),
|
|
||||||
Expanded(
|
|
||||||
child: DefaultTabController(
|
|
||||||
length: 4,
|
|
||||||
// initialIndex: selectedIndex.value,
|
|
||||||
child: Column(children: [
|
|
||||||
CommonTabBar(tabs: [
|
|
||||||
Tab(
|
|
||||||
text: 'All',
|
|
||||||
),
|
|
||||||
Tab(
|
|
||||||
child: Row(children: [
|
|
||||||
commonGlassContainer(
|
|
||||||
borderColor: Color(0xFF1E3A46),
|
|
||||||
opacity1: 0.05,
|
|
||||||
opacity2: 0.06,
|
|
||||||
width: 30.w,
|
|
||||||
height: 30.h,
|
|
||||||
borderradius: 100,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/f7_hand-thumbsup.png",
|
|
||||||
height: 17.h,
|
|
||||||
width: 17.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
border: 1.71),
|
|
||||||
Spacer(),
|
|
||||||
text14400white("110K"),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
Tab(
|
|
||||||
child: Row(children: [
|
|
||||||
commonGlassContainer(
|
|
||||||
borderColor: Color(0xFF1E3A46),
|
|
||||||
opacity1: 0.05,
|
|
||||||
opacity2: 0.06,
|
|
||||||
width: 30.w,
|
|
||||||
height: 30.h,
|
|
||||||
borderradius: 100,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/heart 2.png",
|
|
||||||
height: 17.h,
|
|
||||||
width: 17.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
border: 1.71),
|
|
||||||
Spacer(),
|
|
||||||
text14400white("9.7K"),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
Tab(
|
|
||||||
child: Row(children: [
|
|
||||||
commonGlassContainer(
|
|
||||||
borderColor: Color(0xFF1E3A46),
|
|
||||||
opacity1: 0.05,
|
|
||||||
opacity2: 0.06,
|
|
||||||
width: 30.w,
|
|
||||||
height: 30.h,
|
|
||||||
borderradius: 100,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/party-popper 2.png",
|
|
||||||
height: 17.h,
|
|
||||||
width: 17.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
border: 1.71),
|
|
||||||
Spacer(),
|
|
||||||
text14400white("7.4K"),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
Expanded(
|
|
||||||
child: TabBarView(
|
|
||||||
children: [
|
|
||||||
allTab(),
|
|
||||||
likeTab(),
|
|
||||||
favouriteTab(),
|
|
||||||
partyTab(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h)
|
|
||||||
])),
|
|
||||||
)
|
|
||||||
])
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget allTab() {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Expanded(
|
|
||||||
child: ListView.builder(
|
|
||||||
itemCount: allTabData.length,
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
commonReaction(
|
|
||||||
imagePath: allTabData[index]["imagePath"],
|
|
||||||
reactionimg: allTabData[index]["reactionimg"],
|
|
||||||
title: allTabData[index]["title"]),
|
|
||||||
if (allTabData.length - 1 != index) commonDivider(),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget likeTab() {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Expanded(
|
|
||||||
child: ListView.builder(
|
|
||||||
itemCount: allTabData.length,
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
commonReaction(
|
|
||||||
imagePath: allTabData[index]["imagePath"],
|
|
||||||
reactionimg: allTabData[index]["reactionimg"],
|
|
||||||
title: allTabData[index]["title"]),
|
|
||||||
if (allTabData.length - 1 != index) commonDivider(),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget favouriteTab() {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Expanded(
|
|
||||||
child: ListView.builder(
|
|
||||||
itemCount: allTabData.length,
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
commonReaction(
|
|
||||||
imagePath: allTabData[index]["imagePath"],
|
|
||||||
reactionimg: allTabData[index]["reactionimg"],
|
|
||||||
title: allTabData[index]["title"]),
|
|
||||||
if (allTabData.length - 1 != index) commonDivider(),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget partyTab() {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Expanded(
|
|
||||||
child: ListView.builder(
|
|
||||||
itemCount: allTabData.length,
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
commonReaction(
|
|
||||||
imagePath: allTabData[index]["imagePath"],
|
|
||||||
reactionimg: allTabData[index]["reactionimg"],
|
|
||||||
title: allTabData[index]["title"]),
|
|
||||||
if (allTabData.length - 1 != index) commonDivider(),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget commonReaction(
|
|
||||||
{required String imagePath,
|
|
||||||
required String reactionimg,
|
|
||||||
required String title}) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 25.w, vertical: 18.h),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Stack(children: [
|
|
||||||
CircleAvatar(
|
|
||||||
radius: 25.r,
|
|
||||||
backgroundImage: AssetImage(imagePath),
|
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
bottom: 0,
|
|
||||||
right: 0,
|
|
||||||
child: Container(
|
|
||||||
height: 22.h,
|
|
||||||
width: 22.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
color: Color(0xFF1E3A46),
|
|
||||||
border: Border.all(
|
|
||||||
color: Color(0xFFFCFCFC).withOpacity(0.18),
|
|
||||||
width: 0.6)),
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
reactionimg,
|
|
||||||
height: 12.h,
|
|
||||||
width: 12.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
]),
|
|
||||||
sizedBoxWidth(10.w),
|
|
||||||
text17400white(title),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,356 +0,0 @@
|
|||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:dotted_border/dotted_border.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
import 'package:flutter_reaction_button/flutter_reaction_button.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:regroup/Common/CommonButton.dart';
|
|
||||||
import 'package:regroup/Common/CommonDropDown.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonDropdown.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
import 'package:regroup/Utils/Common/ImageUpload.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:regroup/resources/routes/route_name.dart';
|
|
||||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
|
||||||
|
|
||||||
class PostScreen extends StatefulWidget {
|
|
||||||
const PostScreen({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<PostScreen> createState() => _PostScreenState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _PostScreenState extends State<PostScreen> {
|
|
||||||
List<File?> bannerPath = [];
|
|
||||||
bool isbannerAdded = false;
|
|
||||||
var selectedContainerIndices = <int>{}.obs;
|
|
||||||
|
|
||||||
void toggleSelectedIndex(int index) {
|
|
||||||
if (selectedContainerIndices.contains(index)) {
|
|
||||||
selectedContainerIndices.remove(index);
|
|
||||||
} else {
|
|
||||||
selectedContainerIndices.add(index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Create a post",
|
|
||||||
),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
|
|
||||||
text16w400_FCFCFC("Caption"),
|
|
||||||
|
|
||||||
sizedBoxHeight(18.h),
|
|
||||||
CustomTextFormField2(
|
|
||||||
maxlines: 3,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text16w400_FCFCFC("Media"),
|
|
||||||
sizedBoxHeight(18.h),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
ImageUploadBottomSheet().showModal(
|
|
||||||
context,
|
|
||||||
false,
|
|
||||||
(result) {
|
|
||||||
var file = File(result);
|
|
||||||
|
|
||||||
bannerPath.add(file);
|
|
||||||
isbannerAdded = true;
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: DottedBorder(
|
|
||||||
strokeWidth: 1,
|
|
||||||
dashPattern: [7, 4],
|
|
||||||
borderType: BorderType.RRect,
|
|
||||||
radius: Radius.circular(14.r),
|
|
||||||
color: Color(0xFF434A53),
|
|
||||||
child: commonGlassContainer(
|
|
||||||
border: 0,
|
|
||||||
width: double.infinity,
|
|
||||||
height: 130.h,
|
|
||||||
borderradius: 10.r,
|
|
||||||
customWidget: bannerPath.isNotEmpty && isbannerAdded
|
|
||||||
? Stack(children: [
|
|
||||||
Image.file(
|
|
||||||
bannerPath[0]!,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
width: double.infinity,
|
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
right: 5,
|
|
||||||
bottom: 5,
|
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
bannerPath.clear();
|
|
||||||
isbannerAdded = false;
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
width: 27,
|
|
||||||
height: 27,
|
|
||||||
decoration: ShapeDecoration(
|
|
||||||
color: Color(0xFF7E7E7E),
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.circular(
|
|
||||||
5)),
|
|
||||||
),
|
|
||||||
child: Icon(
|
|
||||||
Icons.delete_outline_outlined,
|
|
||||||
color: Colors.white,
|
|
||||||
))),
|
|
||||||
),
|
|
||||||
])
|
|
||||||
: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(vertical: 16.h),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/bi_download.png",
|
|
||||||
height: 36.h,
|
|
||||||
width: 36.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(10.h),
|
|
||||||
text14w400_FCFCFC("Upload image"),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
text8w400_8A8A8A(
|
|
||||||
"Allowed file extensions: jpg, png, gif Max file size: 10 MB"),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text16w400_FCFCFC("Tags"),
|
|
||||||
sizedBoxHeight(18.h),
|
|
||||||
CustomDropDownTag1(
|
|
||||||
header: "Enter tags",
|
|
||||||
title: "Enter tags",
|
|
||||||
listData: [
|
|
||||||
"#Race",
|
|
||||||
"#Swimming",
|
|
||||||
"#Cycle",
|
|
||||||
"#Swimming",
|
|
||||||
"#Race"
|
|
||||||
],
|
|
||||||
rowData: [
|
|
||||||
"23,233 Recently use tags",
|
|
||||||
"15,123 Recently use tags",
|
|
||||||
"15,123 Recently use tags",
|
|
||||||
"15,123 Available tags",
|
|
||||||
"15,123 Available tags"
|
|
||||||
],
|
|
||||||
onItemSelected: (p0) {},
|
|
||||||
leadingImage: SizedBox()),
|
|
||||||
// CustomTextFormField(
|
|
||||||
// suffixIcon: Container(
|
|
||||||
// height: 20.h,
|
|
||||||
// width: 20.w,
|
|
||||||
// child: Center(
|
|
||||||
// child: Image.asset(
|
|
||||||
// "assets/images/png/Frame 58575.png",
|
|
||||||
// height: 20.h,
|
|
||||||
// width: 20.w,
|
|
||||||
// fit: BoxFit.cover,
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// )),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
containerTile(text: "# Race", index: 0),
|
|
||||||
containerTile(text: "# Swimming", index: 1),
|
|
||||||
containerTile(text: "# Cycle", index: 2),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
containerTile(text: "# Race", index: 3),
|
|
||||||
containerTile(text: "# Swimming", index: 4),
|
|
||||||
containerTile(text: "# Cycle", index: 5),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
text16w400_FCFCFC("CTA Title"),
|
|
||||||
sizedBoxHeight(18.h),
|
|
||||||
CustomTextFormField(
|
|
||||||
// validationMessage: "Enter a CTA Title",
|
|
||||||
validator: (val) {
|
|
||||||
if (val == null || val.isEmpty) {
|
|
||||||
return 'Enter a CTA Title';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
inputFormatters: [
|
|
||||||
LengthLimitingTextInputFormatter(20),
|
|
||||||
RemoveEmojiInputFormatter()
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text16w400_FCFCFC("Post as"),
|
|
||||||
sizedBoxHeight(18.h),
|
|
||||||
CustomDropDownRadio(
|
|
||||||
header: "",
|
|
||||||
title: "",
|
|
||||||
listData: ['Individual', 'Anonymous'],
|
|
||||||
onItemSelected: (p0) {},
|
|
||||||
leadingImage: SizedBox()),
|
|
||||||
// CommonDropdownradioBtn(
|
|
||||||
// hint: '', items: ['Individual', 'Anonymous']),
|
|
||||||
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text16w400_FCFCFC("Post in"),
|
|
||||||
sizedBoxHeight(18.h),
|
|
||||||
CustomDropDownCheckBox(
|
|
||||||
header: "",
|
|
||||||
title: "",
|
|
||||||
listData: [
|
|
||||||
'Active alliance network',
|
|
||||||
'Fitfam federation',
|
|
||||||
'The athletic town',
|
|
||||||
'Football fever'
|
|
||||||
],
|
|
||||||
onItemSelected: (p0) {},
|
|
||||||
images: [
|
|
||||||
'assets/images/png/Rectangle 65.png',
|
|
||||||
'assets/images/png/Rectangle 66.png',
|
|
||||||
'assets/images/png/Rectangle 60.png',
|
|
||||||
'assets/images/png/Rectangle 68.png'
|
|
||||||
],
|
|
||||||
leadingImage: SizedBox()),
|
|
||||||
// CommonDropdownCheckbox(
|
|
||||||
// hint: '',
|
|
||||||
// items: [
|
|
||||||
// 'Active alliance network',
|
|
||||||
// 'Fitfam federation',
|
|
||||||
// 'The athletic town',
|
|
||||||
// 'Football fever'
|
|
||||||
// ],
|
|
||||||
// images: [
|
|
||||||
// 'assets/images/png/Rectangle 65.png',
|
|
||||||
// 'assets/images/png/Rectangle 66.png',
|
|
||||||
// 'assets/images/png/Rectangle 60.png',
|
|
||||||
// 'assets/images/png/Rectangle 68.png'
|
|
||||||
// ],
|
|
||||||
// ),
|
|
||||||
sizedBoxHeight(40.h),
|
|
||||||
CommonBtn(
|
|
||||||
text: 'Submit post',
|
|
||||||
onTap: () {
|
|
||||||
successBottomsheet();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
|
|
||||||
sizedBoxHeight(150.h),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
void successBottomsheet() {
|
|
||||||
Get.bottomSheet(Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
borderRadius: BorderRadius.circular(14.r),
|
|
||||||
color: Color(0xFF222935)),
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 30.w),
|
|
||||||
child: Column(mainAxisSize: MainAxisSize.min, children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/Frame 1000004082.png',
|
|
||||||
width: 199.w,
|
|
||||||
height: 158.h,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
text18w500Center_FCFCFC(
|
|
||||||
'Your post has been succesfully uploaded'),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
InkWell(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.mainscreen);
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 35.h,
|
|
||||||
width: 216.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
border: Border.all(color: Color(0xFF434A53), width: 1),
|
|
||||||
gradient: const LinearGradient(
|
|
||||||
begin: Alignment.topLeft,
|
|
||||||
end: Alignment.bottomRight,
|
|
||||||
colors: [
|
|
||||||
Color.fromRGBO(255, 255, 255, 0.054),
|
|
||||||
Color.fromRGBO(255, 255, 255, 0.072),
|
|
||||||
],
|
|
||||||
stops: [0.0233, 1.0],
|
|
||||||
transform: GradientRotation(271.14 *
|
|
||||||
(3.141592653589793 /
|
|
||||||
180)), // Converting degrees to radians
|
|
||||||
),
|
|
||||||
borderRadius: BorderRadius.circular(30.r),
|
|
||||||
),
|
|
||||||
child: Center(child: text14w400_FCFCFC('Check out')),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(40.h)
|
|
||||||
]))));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget containerTile({
|
|
||||||
required String text,
|
|
||||||
required int index,
|
|
||||||
}) {
|
|
||||||
return Obx(() {
|
|
||||||
return GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
toggleSelectedIndex(index);
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 35,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: selectedContainerIndices.contains(index)
|
|
||||||
? Color(0xFFD90B2E).withOpacity(0.4)
|
|
||||||
: Color(0xFFFFFFFF).withOpacity(0.2),
|
|
||||||
borderRadius: BorderRadius.circular(30),
|
|
||||||
border: Border.all(color: Color(0xFFD90B2E), width: 1)),
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 20),
|
|
||||||
child: Center(child: text14w400_FCFCFC(text)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:regroup/Common/base_manager.dart';
|
||||||
|
import 'package:regroup/Common/controller/data/network/network_api.dart';
|
||||||
|
|
||||||
|
// FollowersModel? communitytagssobj;
|
||||||
|
|
||||||
|
|
||||||
|
class Communitygetmethod {
|
||||||
|
getTagsdata(id) {}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
import 'package:regroup/Common/api_urls.dart';
|
||||||
|
import 'package:regroup/Common/base_manager.dart';
|
||||||
|
import 'package:regroup/Common/controller/data/network/network_api.dart';
|
||||||
|
|
||||||
|
class Communitypostmethod {
|
||||||
|
Communitypostmethod();
|
||||||
|
|
||||||
|
Future<ResponseData<dynamic>> postCreatedTag(updata) async {
|
||||||
|
print("updata is $updata");
|
||||||
|
final response = await NetworkApiServices().postApi(
|
||||||
|
updata,
|
||||||
|
ApiUrls.postnewtags,
|
||||||
|
);
|
||||||
|
print("response is ${response.data}");
|
||||||
|
print("response message is ${response.message}");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<ResponseData<dynamic>> postUpload(updata) async {
|
||||||
|
print("updata is $updata");
|
||||||
|
final response = await NetworkApiServices().postApi(
|
||||||
|
updata,
|
||||||
|
ApiUrls.postupload,
|
||||||
|
);
|
||||||
|
print("response is ${response.data}");
|
||||||
|
print("response message is ${response.message}");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
import 'package:regroup/Common/api_urls.dart';
|
||||||
|
import 'package:regroup/Common/base_manager.dart';
|
||||||
|
import 'package:regroup/Common/controller/data/network/network_api.dart';
|
||||||
|
import 'package:regroup/Feed%20Module/Main_Screens/Community/Model/communitylistModel.dart';
|
||||||
|
import 'package:regroup/Feed%20Module/Main_Screens/Community/Model/populartagsListModel.dart';
|
||||||
|
|
||||||
|
class CommunityLsitApi {
|
||||||
|
CommunityLsitApi();
|
||||||
|
var data = "";
|
||||||
|
Future<ResponseData<dynamic>> getPostinList() async {
|
||||||
|
final response = await NetworkApiServices().getApi(
|
||||||
|
ApiUrls.getpostcommunitylist,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (response.status == ResponseStatus.SUCCESS) {
|
||||||
|
Map<String, dynamic> responseData =
|
||||||
|
Map<String, dynamic>.from(response.data);
|
||||||
|
if (responseData['status'] == "success") {
|
||||||
|
print("success");
|
||||||
|
CommunityListModel communitylistobj =
|
||||||
|
CommunityListModel.fromJson(responseData);
|
||||||
|
} else {
|
||||||
|
// return ResponseData<dynamic>(
|
||||||
|
// responseData['message'], ResponseStatus.FAILED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<ResponseData<dynamic>> getPopulartagsList(updata) async {
|
||||||
|
final response = await NetworkApiServices().getApi(
|
||||||
|
'https://regroup.betadelivery.com/api/v1/fetch-popular-tags?manage_community_xid=$updata&name=');
|
||||||
|
// '${ApiUrls.getpopulartagscommunity}?manage_community_xid=$updata&name=',
|
||||||
|
|
||||||
|
// );
|
||||||
|
|
||||||
|
if (response.status == ResponseStatus.SUCCESS) {
|
||||||
|
Map<String, dynamic> responseData =
|
||||||
|
Map<String, dynamic>.from(response.data);
|
||||||
|
if (responseData['status'] == "success") {
|
||||||
|
print("success");
|
||||||
|
PopulartagsListModel populartagslistobj =
|
||||||
|
PopulartagsListModel.fromJson(responseData);
|
||||||
|
} else {
|
||||||
|
// return ResponseData<dynamic>(
|
||||||
|
// responseData['message'], ResponseStatus.FAILED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
|
|
||||||
class Certificate extends StatefulWidget {
|
|
||||||
const Certificate({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<Certificate> createState() => _CertificateState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _CertificateState extends State<Certificate> {
|
|
||||||
List CertificateData = [
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/image 17.png",
|
|
||||||
"text": "Lorem ipsum is a dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/image 18.png",
|
|
||||||
"text": "Lorem ipsum is a dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/image 20.png",
|
|
||||||
"text": "Lorem ipsum is a dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/image 17.png",
|
|
||||||
"text": "Lorem ipsum is a dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/image 18.png",
|
|
||||||
"text": "Lorem ipsum is a dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/image 20.png",
|
|
||||||
"text": "Lorem ipsum is a dummy text",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Certifications/Qualifications",
|
|
||||||
),
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
), SingleChildScrollView(
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
|
||||||
child: Column(children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Container(
|
|
||||||
height: 600.h,
|
|
||||||
child: GridView.builder(
|
|
||||||
scrollDirection: Axis.vertical,
|
|
||||||
gridDelegate:
|
|
||||||
const SliverGridDelegateWithFixedCrossAxisCount(
|
|
||||||
crossAxisCount: 3,
|
|
||||||
mainAxisSpacing: 20,
|
|
||||||
crossAxisSpacing: 8,
|
|
||||||
childAspectRatio: 0.65,
|
|
||||||
),
|
|
||||||
itemCount: CertificateData.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
CertificateData[index]["imagePath"],
|
|
||||||
height: 100.h,
|
|
||||||
width: 105.w,
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: Center(
|
|
||||||
child: text14w400_FCFCFC(
|
|
||||||
CertificateData[index]["text"],
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
])))
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,178 +0,0 @@
|
|||||||
class GetEditProfileBus {
|
|
||||||
String? status;
|
|
||||||
int? statusCode;
|
|
||||||
String? message;
|
|
||||||
Data? data;
|
|
||||||
|
|
||||||
GetEditProfileBus({this.status, this.statusCode, this.message, this.data});
|
|
||||||
|
|
||||||
GetEditProfileBus.fromJson(Map<String, dynamic> json) {
|
|
||||||
status = json['status'];
|
|
||||||
statusCode = json['status_code'];
|
|
||||||
message = json['message'];
|
|
||||||
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
|
||||||
data['status'] = this.status;
|
|
||||||
data['status_code'] = this.statusCode;
|
|
||||||
data['message'] = this.message;
|
|
||||||
if (this.data != null) {
|
|
||||||
data['data'] = this.data!.toJson();
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Data {
|
|
||||||
int? id;
|
|
||||||
int? businessTypeXid;
|
|
||||||
String? businessOwnerName;
|
|
||||||
String? businessName;
|
|
||||||
String? businessLocation;
|
|
||||||
String? businessContactNumber;
|
|
||||||
String? businessEmail;
|
|
||||||
String? businessHandle;
|
|
||||||
String? websiteLink;
|
|
||||||
String? googleReviewLink;
|
|
||||||
String? businessLogo;
|
|
||||||
String? tags;
|
|
||||||
String? bannerImage;
|
|
||||||
Follows? follows;
|
|
||||||
BusinessType? businessType;
|
|
||||||
|
|
||||||
Data(
|
|
||||||
{this.id,
|
|
||||||
this.businessTypeXid,
|
|
||||||
this.businessOwnerName,
|
|
||||||
this.businessName,
|
|
||||||
this.businessLocation,
|
|
||||||
this.businessContactNumber,
|
|
||||||
this.businessEmail,
|
|
||||||
this.businessHandle,
|
|
||||||
this.websiteLink,
|
|
||||||
this.googleReviewLink,
|
|
||||||
this.businessLogo,
|
|
||||||
this.tags,
|
|
||||||
this.bannerImage,
|
|
||||||
this.follows,
|
|
||||||
this.businessType});
|
|
||||||
|
|
||||||
Data.fromJson(Map<String, dynamic> json) {
|
|
||||||
id = json['id'];
|
|
||||||
businessTypeXid = json['business_type_xid'];
|
|
||||||
businessOwnerName = json['business_owner_name'];
|
|
||||||
businessName = json['business_name'];
|
|
||||||
businessLocation = json['business_location'];
|
|
||||||
businessContactNumber = json['business_contact_number'];
|
|
||||||
businessEmail = json['business_email'];
|
|
||||||
businessHandle = json['business_handle'];
|
|
||||||
websiteLink = json['website_link'];
|
|
||||||
googleReviewLink = json['google_review_link'];
|
|
||||||
businessLogo = json['business_logo'];
|
|
||||||
tags = json['tags'];
|
|
||||||
bannerImage = json['banner_image'];
|
|
||||||
follows =
|
|
||||||
json['follows'] != null ? new Follows.fromJson(json['follows']) : null;
|
|
||||||
businessType = json['business_type'] != null
|
|
||||||
? new BusinessType.fromJson(json['business_type'])
|
|
||||||
: null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
|
||||||
data['id'] = this.id;
|
|
||||||
data['business_type_xid'] = this.businessTypeXid;
|
|
||||||
data['business_owner_name'] = this.businessOwnerName;
|
|
||||||
data['business_name'] = this.businessName;
|
|
||||||
data['business_location'] = this.businessLocation;
|
|
||||||
data['business_contact_number'] = this.businessContactNumber;
|
|
||||||
data['business_email'] = this.businessEmail;
|
|
||||||
data['business_handle'] = this.businessHandle;
|
|
||||||
data['website_link'] = this.websiteLink;
|
|
||||||
data['google_review_link'] = this.googleReviewLink;
|
|
||||||
data['business_logo'] = this.businessLogo;
|
|
||||||
data['tags'] = this.tags;
|
|
||||||
data['banner_image'] = this.bannerImage;
|
|
||||||
if (this.follows != null) {
|
|
||||||
data['follows'] = this.follows!.toJson();
|
|
||||||
}
|
|
||||||
if (this.businessType != null) {
|
|
||||||
data['business_type'] = this.businessType!.toJson();
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Follows {
|
|
||||||
int? following;
|
|
||||||
int? followers;
|
|
||||||
|
|
||||||
Follows({this.following, this.followers});
|
|
||||||
|
|
||||||
Follows.fromJson(Map<String, dynamic> json) {
|
|
||||||
following = json['following'];
|
|
||||||
followers = json['followers'];
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
|
||||||
data['following'] = this.following;
|
|
||||||
data['followers'] = this.followers;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class BusinessType {
|
|
||||||
int? id;
|
|
||||||
String? name;
|
|
||||||
String? image;
|
|
||||||
String? description;
|
|
||||||
int? isActive;
|
|
||||||
String? createdBy;
|
|
||||||
String? modifiedBy;
|
|
||||||
String? deletedAt;
|
|
||||||
String? createdAt;
|
|
||||||
String? updatedAt;
|
|
||||||
|
|
||||||
BusinessType(
|
|
||||||
{this.id,
|
|
||||||
this.name,
|
|
||||||
this.image,
|
|
||||||
this.description,
|
|
||||||
this.isActive,
|
|
||||||
this.createdBy,
|
|
||||||
this.modifiedBy,
|
|
||||||
this.deletedAt,
|
|
||||||
this.createdAt,
|
|
||||||
this.updatedAt});
|
|
||||||
|
|
||||||
BusinessType.fromJson(Map<String, dynamic> json) {
|
|
||||||
id = json['id'];
|
|
||||||
name = json['name'];
|
|
||||||
image = json['image'];
|
|
||||||
description = json['description'];
|
|
||||||
isActive = json['is_active'];
|
|
||||||
createdBy = json['created_by'];
|
|
||||||
modifiedBy = json['modified_by'];
|
|
||||||
deletedAt = json['deleted_at'];
|
|
||||||
createdAt = json['created_at'];
|
|
||||||
updatedAt = json['updated_at'];
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
|
||||||
data['id'] = this.id;
|
|
||||||
data['name'] = this.name;
|
|
||||||
data['image'] = this.image;
|
|
||||||
data['description'] = this.description;
|
|
||||||
data['is_active'] = this.isActive;
|
|
||||||
data['created_by'] = this.createdBy;
|
|
||||||
data['modified_by'] = this.modifiedBy;
|
|
||||||
data['deleted_at'] = this.deletedAt;
|
|
||||||
data['created_at'] = this.createdAt;
|
|
||||||
data['updated_at'] = this.updatedAt;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,139 +0,0 @@
|
|||||||
class GetEditProfileIndi {
|
|
||||||
String? status;
|
|
||||||
int? statusCode;
|
|
||||||
String? message;
|
|
||||||
Data? data;
|
|
||||||
|
|
||||||
GetEditProfileIndi({this.status, this.statusCode, this.message, this.data});
|
|
||||||
|
|
||||||
GetEditProfileIndi.fromJson(Map<String, dynamic> json) {
|
|
||||||
status = json['status'];
|
|
||||||
statusCode = json['status_code'];
|
|
||||||
message = json['message'];
|
|
||||||
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
|
||||||
data['status'] = this.status;
|
|
||||||
data['status_code'] = this.statusCode;
|
|
||||||
data['message'] = this.message;
|
|
||||||
if (this.data != null) {
|
|
||||||
data['data'] = this.data!.toJson();
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Data {
|
|
||||||
int? id;
|
|
||||||
String? userName;
|
|
||||||
String? fullName;
|
|
||||||
String? gender;
|
|
||||||
String? dateOfBirth;
|
|
||||||
List<Interest>? interest;
|
|
||||||
String? about;
|
|
||||||
String? position;
|
|
||||||
String? trainingScores;
|
|
||||||
String? height;
|
|
||||||
String? weight;
|
|
||||||
String? battingAverage;
|
|
||||||
Follows? follows;
|
|
||||||
|
|
||||||
Data(
|
|
||||||
{this.id,
|
|
||||||
this.userName,
|
|
||||||
this.fullName,
|
|
||||||
this.gender,
|
|
||||||
this.dateOfBirth,
|
|
||||||
this.interest,
|
|
||||||
this.about,
|
|
||||||
this.position,
|
|
||||||
this.trainingScores,
|
|
||||||
this.height,
|
|
||||||
this.weight,
|
|
||||||
this.battingAverage,
|
|
||||||
this.follows});
|
|
||||||
|
|
||||||
Data.fromJson(Map<String, dynamic> json) {
|
|
||||||
id = json['id'];
|
|
||||||
userName = json['user_name'];
|
|
||||||
fullName = json['full_name'];
|
|
||||||
gender = json['gender'];
|
|
||||||
dateOfBirth = json['date_of_birth'];
|
|
||||||
if (json['interest'] != null) {
|
|
||||||
interest = <Interest>[];
|
|
||||||
json['interest'].forEach((v) {
|
|
||||||
interest!.add(new Interest.fromJson(v));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
about = json['about'];
|
|
||||||
position = json['position'];
|
|
||||||
trainingScores = json['training_scores'];
|
|
||||||
height = json['height'];
|
|
||||||
weight = json['weight'];
|
|
||||||
battingAverage = json['batting_average'];
|
|
||||||
follows =
|
|
||||||
json['follows'] != null ? new Follows.fromJson(json['follows']) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
|
||||||
data['id'] = this.id;
|
|
||||||
data['user_name'] = this.userName;
|
|
||||||
data['full_name'] = this.fullName;
|
|
||||||
data['gender'] = this.gender;
|
|
||||||
data['date_of_birth'] = this.dateOfBirth;
|
|
||||||
if (this.interest != null) {
|
|
||||||
data['interest'] = this.interest!.map((v) => v.toJson()).toList();
|
|
||||||
}
|
|
||||||
data['about'] = this.about;
|
|
||||||
data['position'] = this.position;
|
|
||||||
data['training_scores'] = this.trainingScores;
|
|
||||||
data['height'] = this.height;
|
|
||||||
data['weight'] = this.weight;
|
|
||||||
data['batting_average'] = this.battingAverage;
|
|
||||||
if (this.follows != null) {
|
|
||||||
data['follows'] = this.follows!.toJson();
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Interest {
|
|
||||||
int? id;
|
|
||||||
String? name;
|
|
||||||
|
|
||||||
Interest({this.id, this.name});
|
|
||||||
|
|
||||||
Interest.fromJson(Map<String, dynamic> json) {
|
|
||||||
id = json['id'];
|
|
||||||
name = json['name'];
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
|
||||||
data['id'] = this.id;
|
|
||||||
data['name'] = this.name;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Follows {
|
|
||||||
int? following;
|
|
||||||
int? followers;
|
|
||||||
|
|
||||||
Follows({this.following, this.followers});
|
|
||||||
|
|
||||||
Follows.fromJson(Map<String, dynamic> json) {
|
|
||||||
following = json['following'];
|
|
||||||
followers = json['followers'];
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
|
||||||
data['following'] = this.following;
|
|
||||||
data['followers'] = this.followers;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,423 +0,0 @@
|
|||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:dio/dio.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart' hide MultipartFile, FormData;
|
|
||||||
import 'package:regroup/Common/CommonButton.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Common/base_manager.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/EditProfile/View/ProfileTab.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/EditProfile/ViewModel/EditProfileApi.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonDropdown.dart';
|
|
||||||
import 'package:regroup/Utils/Common/ImageUpload.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/dialogs.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:path/path.dart' as path;
|
|
||||||
import 'package:regroup/resources/routes/route_name.dart';
|
|
||||||
|
|
||||||
import '../../../../../Utils/Common/CustomTextformfield.dart';
|
|
||||||
|
|
||||||
class BusEditProfile extends StatefulWidget {
|
|
||||||
const BusEditProfile({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<BusEditProfile> createState() => _BusEditProfileState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _BusEditProfileState extends State<BusEditProfile> {
|
|
||||||
TextEditingController busNameController = TextEditingController();
|
|
||||||
TextEditingController busUserNameController = TextEditingController();
|
|
||||||
TextEditingController ownerNameController = TextEditingController();
|
|
||||||
|
|
||||||
TextEditingController foundedonController = TextEditingController();
|
|
||||||
TextEditingController websiteLinkController = TextEditingController();
|
|
||||||
TextEditingController locationController = TextEditingController();
|
|
||||||
TextEditingController bioController = TextEditingController();
|
|
||||||
|
|
||||||
String profilePicture = "";
|
|
||||||
bool isImageAdded = false;
|
|
||||||
|
|
||||||
bool isOnce = true;
|
|
||||||
late Future myfuture;
|
|
||||||
|
|
||||||
convertFileToMultiPart(String? file) async {
|
|
||||||
return await MultipartFile.fromFile(
|
|
||||||
file!,
|
|
||||||
filename: path.basename(file),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
// TODO: implement initState
|
|
||||||
|
|
||||||
myfuture = EditProfileApi()
|
|
||||||
.getEditProfileBusiness()
|
|
||||||
.then((value) => {setValues()});
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Founded on & bio data not there
|
|
||||||
|
|
||||||
setValues() {
|
|
||||||
if (isOnce) {
|
|
||||||
busNameController.text = getEditProfileBus!.data!.businessName ?? '';
|
|
||||||
busUserNameController.text = getEditProfileBus!.data!.businessName ?? '';
|
|
||||||
ownerNameController.text =
|
|
||||||
getEditProfileBus!.data!.businessOwnerName ?? '';
|
|
||||||
foundedonController.text =
|
|
||||||
getEditProfileBus!.data!.businessOwnerName ?? '';
|
|
||||||
websiteLinkController.text = getEditProfileBus!.data!.websiteLink ?? '';
|
|
||||||
locationController.text = getEditProfileBus!.data!.businessLocation ?? '';
|
|
||||||
|
|
||||||
bioController.text = getEditProfileBus!.data!.businessOwnerName ?? '';
|
|
||||||
|
|
||||||
// _selectedgenderType = getEditProfileIndi!.data!.gender ?? '';
|
|
||||||
// _selectedsportType = getEditProfileIndi!.data!.interest!.join(', ') ?? '';
|
|
||||||
|
|
||||||
isOnce = false;
|
|
||||||
setState(() {});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void saveEditProfileBus() async {
|
|
||||||
FormData? updata;
|
|
||||||
if (busNameController.text.isBlank! ||
|
|
||||||
busUserNameController.text.isBlank! ||
|
|
||||||
ownerNameController.text.isBlank! ||
|
|
||||||
foundedonController.text.isBlank! ||
|
|
||||||
websiteLinkController.text.isBlank! ||
|
|
||||||
locationController.text.isBlank! ||
|
|
||||||
bioController.text.isBlank!) {
|
|
||||||
Get.snackbar(
|
|
||||||
'Error',
|
|
||||||
'Enter your credentials',
|
|
||||||
snackPosition: SnackPosition.BOTTOM,
|
|
||||||
backgroundColor: Colors.red,
|
|
||||||
colorText: Colors.white,
|
|
||||||
);
|
|
||||||
} else if (profilePicture == "") {
|
|
||||||
utils.showToast('Upload edit profile picture!');
|
|
||||||
} else {
|
|
||||||
updata = FormData.fromMap({
|
|
||||||
"business_name": busNameController.text,
|
|
||||||
"business_username": busUserNameController.text,
|
|
||||||
"business_owner_name": ownerNameController.text,
|
|
||||||
"founded_on": foundedonController.text,
|
|
||||||
"website_link": websiteLinkController.text,
|
|
||||||
"business_location": locationController.text,
|
|
||||||
"bio": bioController.text,
|
|
||||||
"business_profile": await convertFileToMultiPart(profilePicture),
|
|
||||||
});
|
|
||||||
|
|
||||||
final data = await EditProfileApi().postEditProfileBusiness(updata);
|
|
||||||
if (data.status == ResponseStatus.SUCCESS) {
|
|
||||||
// await global.setname();
|
|
||||||
// Get.snackbar(
|
|
||||||
// "Success!",
|
|
||||||
// 'success!',
|
|
||||||
// duration: Duration(seconds: 2),
|
|
||||||
// colorText: Colors.white,
|
|
||||||
// backgroundColor: Colors.green,
|
|
||||||
// margin: EdgeInsets.all(8),
|
|
||||||
// snackStyle: SnackStyle.FLOATING,
|
|
||||||
// snackPosition: SnackPosition.BOTTOM,
|
|
||||||
// );
|
|
||||||
utils.showToast("Data Saved Successfully");
|
|
||||||
// Get.back();
|
|
||||||
Get.toNamed(RouteName.profiletab);
|
|
||||||
// Get.back(result: true);
|
|
||||||
} else {
|
|
||||||
// btnController.reset();
|
|
||||||
Get.snackbar(
|
|
||||||
"Error!",
|
|
||||||
data.data['message'],
|
|
||||||
duration: Duration(seconds: 2),
|
|
||||||
colorText: Colors.white,
|
|
||||||
backgroundColor: Colors.red,
|
|
||||||
margin: EdgeInsets.all(8),
|
|
||||||
snackStyle: SnackStyle.FLOATING,
|
|
||||||
snackPosition: SnackPosition.BOTTOM,
|
|
||||||
);
|
|
||||||
// _controller.isTextFieldEnabled.value = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "",
|
|
||||||
),
|
|
||||||
body: FutureBuilder(
|
|
||||||
future: myfuture,
|
|
||||||
builder: (ctx, snapshot) {
|
|
||||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
|
||||||
return Center(
|
|
||||||
child: CircularProgressIndicator(
|
|
||||||
color: Colors.blue,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (snapshot.hasError) {
|
|
||||||
return Center(
|
|
||||||
child: Text(
|
|
||||||
'${snapshot.error} occurred',
|
|
||||||
style: TextStyle(fontSize: 18.spMin),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (snapshot.connectionState == ConnectionState.done &&
|
|
||||||
snapshot.hasData) {
|
|
||||||
print("Data fetched-->");
|
|
||||||
return Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage(
|
|
||||||
"assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
SingleChildScrollView(
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
|
||||||
child: Column(children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Stack(
|
|
||||||
children: [
|
|
||||||
profilePicture != "" && isImageAdded
|
|
||||||
? ClipOval(
|
|
||||||
child: SizedBox.fromSize(
|
|
||||||
size: Size.fromRadius(50.r),
|
|
||||||
child: Image.file(
|
|
||||||
File(profilePicture),
|
|
||||||
// filePath[0]!,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
width: double.infinity,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: getEditProfileBus!.data!.businessLogo !=
|
|
||||||
null
|
|
||||||
? Container(
|
|
||||||
width: 100.w,
|
|
||||||
height: 100.h,
|
|
||||||
decoration: ShapeDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: Image(
|
|
||||||
image: NetworkImage(
|
|
||||||
getEditProfileBus!.data!
|
|
||||||
.businessLogo ??
|
|
||||||
''),
|
|
||||||
).image,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
),
|
|
||||||
shape: OvalBorder(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: CircleAvatar(
|
|
||||||
backgroundImage: AssetImage(
|
|
||||||
"assets/images/png/Ellipse 37 (1).png",
|
|
||||||
),
|
|
||||||
radius: 50.r,
|
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
bottom: 0,
|
|
||||||
right: 0,
|
|
||||||
child: InkWell(
|
|
||||||
onTap: () {
|
|
||||||
ImageUploadBottomSheet().showModal(
|
|
||||||
context,
|
|
||||||
true,
|
|
||||||
(result) {
|
|
||||||
var filenameresult =
|
|
||||||
extractFileName(result);
|
|
||||||
|
|
||||||
profilePicture = result;
|
|
||||||
isImageAdded = true;
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 35.h,
|
|
||||||
width: 35.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
color: Color(0xFFD90B2E)),
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/cameraicon2.png",
|
|
||||||
height: 19.h,
|
|
||||||
width: 19.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
))
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(15.h),
|
|
||||||
text16400white("Edit profile picture"),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text16400white("Business name"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
CustomTextFormField(
|
|
||||||
textEditingController: busNameController,
|
|
||||||
leadingIcon: Container(
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Frame 24.png",
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "Victory gear sports emporium",
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
text16400white("Business username"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
CustomTextFormField(
|
|
||||||
textEditingController: busUserNameController,
|
|
||||||
leadingIcon: Container(
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Frame 24.png",
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "victorygames _10",
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
text16400white("Owner name"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
CustomTextFormField(
|
|
||||||
textEditingController: ownerNameController,
|
|
||||||
leadingIcon: Container(
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Frame 24.png",
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "James Bothman",
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
text16400white("Founded on"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () =>
|
|
||||||
datePicker(context, foundedonController),
|
|
||||||
child: AbsorbPointer(
|
|
||||||
child: CustomTextFormField(
|
|
||||||
leadingIcon: Container(
|
|
||||||
width: 18.0,
|
|
||||||
height: 17.0,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/calender.png",
|
|
||||||
width: 18.0,
|
|
||||||
height: 17.0,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "12-04-2024",
|
|
||||||
textEditingController:
|
|
||||||
foundedonController,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
text16400white("Website link"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
CustomTextFormField(
|
|
||||||
textEditingController: websiteLinkController,
|
|
||||||
leadingIcon: Container(
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Vector2a.png",
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "victorygames _10",
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
text16400white("Location"),
|
|
||||||
sizedBoxWidth(6.w),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/octicon_question-24.png",
|
|
||||||
height: 16.h,
|
|
||||||
width: 16.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
CustomTextFormField(
|
|
||||||
textEditingController: locationController,
|
|
||||||
leadingIcon: Container(
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Group 58645.png",
|
|
||||||
width: 18.w,
|
|
||||||
height: 17.h,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "Elm street london, United Kingdom",
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
text16400white("Bio"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
CustomTextFormField2(
|
|
||||||
textEditingController: bioController,
|
|
||||||
hintText:
|
|
||||||
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s. Lorem Ipsum has been the industry's standard",
|
|
||||||
maxlines: 3,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(60.h),
|
|
||||||
CommonBtn(
|
|
||||||
text: "Save",
|
|
||||||
onTap: () {
|
|
||||||
saveEditProfileBus();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
sizedBoxHeight(60.h),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
])))
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
return Container();
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,395 +0,0 @@
|
|||||||
import 'dart:async';
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Common/base_manager.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/Model/followersModel.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/view_model/profileGetmethod.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/view_model/profilePostmethod.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/dialogs.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
|
||||||
|
|
||||||
class Followers extends StatefulWidget {
|
|
||||||
const Followers({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<Followers> createState() => _FollowersState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _FollowersState extends State<Followers> {
|
|
||||||
StreamController<FollowersModel> searchcontroller = StreamController();
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
// TODO: implement initState
|
|
||||||
var updata = "";
|
|
||||||
Profilegetmethod().getFollowers(updata, streamController: searchcontroller);
|
|
||||||
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void dispose() {
|
|
||||||
searchcontroller.close();
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
int? blockid;
|
|
||||||
int? removeid;
|
|
||||||
|
|
||||||
RemoveUploadata() async {
|
|
||||||
utils.loader();
|
|
||||||
Map<String, dynamic> updata = {
|
|
||||||
"iam_principal_xid": removeid,
|
|
||||||
};
|
|
||||||
final data = await Profilepostmethod().postRemoveuser(updata);
|
|
||||||
if (data.status == ResponseStatus.SUCCESS) {
|
|
||||||
Get.back();
|
|
||||||
print("block done");
|
|
||||||
return utils.showToast(data.message);
|
|
||||||
} else {
|
|
||||||
Get.back();
|
|
||||||
print("block not done");
|
|
||||||
return utils.showToast(data.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BlockUploadata() async {
|
|
||||||
utils.loader();
|
|
||||||
Map<String, dynamic> updata = {
|
|
||||||
"blocked_iam_principal_xid": blockid,
|
|
||||||
};
|
|
||||||
final data = await Profilepostmethod().postBlockuser(updata);
|
|
||||||
if (data.status == ResponseStatus.SUCCESS) {
|
|
||||||
Get.back();
|
|
||||||
print("block done");
|
|
||||||
return utils.showToast(data.message);
|
|
||||||
} else {
|
|
||||||
Get.back();
|
|
||||||
print("block not done");
|
|
||||||
return utils.showToast(data.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Followers",
|
|
||||||
),
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
SingleChildScrollView(
|
|
||||||
child: Column(children: [
|
|
||||||
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: CustomTextFormField(
|
|
||||||
leadingIcon: SizedBox(
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/ion_search-outline.png",
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
texttype: TextInputType.text,
|
|
||||||
inputFormatters: [
|
|
||||||
RemoveEmojiInputFormatter(),
|
|
||||||
],
|
|
||||||
onInput: (value) {
|
|
||||||
Profilegetmethod().getFollowers(value,
|
|
||||||
streamController: searchcontroller);
|
|
||||||
},
|
|
||||||
hintText: "Search people",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
StreamBuilder<FollowersModel>(
|
|
||||||
stream: searchcontroller.stream,
|
|
||||||
builder: (ctx, snapshot) {
|
|
||||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
|
||||||
// Display shimmer effect while waiting for data
|
|
||||||
return Center(child: CircularProgressIndicator());
|
|
||||||
} else if (snapshot.hasError) {
|
|
||||||
// Handle error state
|
|
||||||
return Center(
|
|
||||||
child: Text(
|
|
||||||
'${snapshot.error} occurred',
|
|
||||||
style: TextStyle(fontSize: 18),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
// Data has been loaded, show actual UI
|
|
||||||
return followersobj!.data!.isEmpty
|
|
||||||
? _buildNoDataBody(context)
|
|
||||||
:
|
|
||||||
// ListView.builder(
|
|
||||||
// shrinkWrap: true,
|
|
||||||
// itemCount: followersobj!.data!.length,
|
|
||||||
// itemBuilder: (context, index) {
|
|
||||||
// return Column(
|
|
||||||
// children: [
|
|
||||||
// followerWidget(
|
|
||||||
// imagePath: followersobj?.data?[index]
|
|
||||||
// .follower?.profilePhoto ??
|
|
||||||
// "",
|
|
||||||
// // followersData[index]["imagePath"],
|
|
||||||
// title: followersobj?.data?[index].follower
|
|
||||||
// ?.fullName ??
|
|
||||||
// "",
|
|
||||||
// // followersData[index]["title"],
|
|
||||||
// subtitle: followersobj?.data?[index]
|
|
||||||
// .follower?.userName ??
|
|
||||||
// "",
|
|
||||||
// blockonTap: () {
|
|
||||||
// BlockUploadata(followersobj!
|
|
||||||
// .data![index].follower!.id);
|
|
||||||
// }
|
|
||||||
// // followersData[index]["subtitle"]
|
|
||||||
// ),
|
|
||||||
// if (index != followersobj!.data!.length - 1)
|
|
||||||
// commonDivider(),
|
|
||||||
// ],
|
|
||||||
// );
|
|
||||||
// },
|
|
||||||
// );
|
|
||||||
|
|
||||||
ListView.separated(
|
|
||||||
physics: ScrollPhysics(),
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: followersobj!.data!.length,
|
|
||||||
separatorBuilder:
|
|
||||||
(BuildContext context, int index) {
|
|
||||||
return commonDivider();
|
|
||||||
},
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(
|
|
||||||
vertical: 16.h, horizontal: 16.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
followersobj!.data![index].follower!
|
|
||||||
.profilePhoto ==
|
|
||||||
null ||
|
|
||||||
followersobj!
|
|
||||||
.data![index]
|
|
||||||
.follower!
|
|
||||||
.profilePhoto!
|
|
||||||
.isEmpty
|
|
||||||
? CircleAvatar(
|
|
||||||
backgroundImage: AssetImage(
|
|
||||||
'assets/images/png/Ellipse 43.png'),
|
|
||||||
radius: 25.r,
|
|
||||||
)
|
|
||||||
: CircleAvatar(
|
|
||||||
backgroundImage: NetworkImage(
|
|
||||||
followersobj!
|
|
||||||
.data![index]
|
|
||||||
.follower!
|
|
||||||
.profilePhoto!),
|
|
||||||
radius: 25.r,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(10.w),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment:
|
|
||||||
CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
followersobj!.data![index].follower!
|
|
||||||
.fullName ==
|
|
||||||
null ||
|
|
||||||
followersobj!
|
|
||||||
.data![index]
|
|
||||||
.follower!
|
|
||||||
.fullName!
|
|
||||||
.isEmpty ==
|
|
||||||
true
|
|
||||||
? text16w400_FCFCFC("Regroup")
|
|
||||||
: text16w400_FCFCFC(
|
|
||||||
followersobj!.data![index]
|
|
||||||
.follower!.fullName!),
|
|
||||||
sizedBoxHeight(4.h),
|
|
||||||
followersobj!.data![index].follower!
|
|
||||||
.userName ==
|
|
||||||
null ||
|
|
||||||
followersobj!
|
|
||||||
.data![index]
|
|
||||||
.follower!
|
|
||||||
.userName!
|
|
||||||
.isEmpty ==
|
|
||||||
true
|
|
||||||
? text12w400_FCFCFC_blur(
|
|
||||||
"regroup")
|
|
||||||
: text12w400_FCFCFC_blur(
|
|
||||||
followersobj!.data![index]
|
|
||||||
.follower!.userName!)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
PopupMenuButton(
|
|
||||||
surfaceTintColor: Color(0xFF222935),
|
|
||||||
constraints:
|
|
||||||
BoxConstraints.tightFor(
|
|
||||||
width: 176.w),
|
|
||||||
offset: Offset(0, 20),
|
|
||||||
color: Color(0xFF222935),
|
|
||||||
tooltip: "",
|
|
||||||
itemBuilder: (BuildContext
|
|
||||||
context) =>
|
|
||||||
<PopupMenuEntry>[
|
|
||||||
PopupMenuItem(
|
|
||||||
// onTap: () {},
|
|
||||||
onTap: () async {
|
|
||||||
setState(() {
|
|
||||||
removeid = followersobj!
|
|
||||||
.data![index]
|
|
||||||
.follower!
|
|
||||||
.id ??
|
|
||||||
0;
|
|
||||||
followersobj!.data!
|
|
||||||
.removeWhere((item) =>
|
|
||||||
item.follower!
|
|
||||||
.id ==
|
|
||||||
removeid);
|
|
||||||
RemoveUploadata();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(
|
|
||||||
horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white(
|
|
||||||
"Remove user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/fluent_delete-28-regular.png",
|
|
||||||
height: 15.h,
|
|
||||||
width: 15.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(
|
|
||||||
horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white(
|
|
||||||
"Message user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/fluent_chat-20-regular.png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () async {
|
|
||||||
setState(() {
|
|
||||||
blockid = followersobj!
|
|
||||||
.data![index]
|
|
||||||
.follower!
|
|
||||||
.id ??
|
|
||||||
0;
|
|
||||||
followersobj!.data!
|
|
||||||
.removeWhere((item) =>
|
|
||||||
item.follower!
|
|
||||||
.id ==
|
|
||||||
blockid);
|
|
||||||
BlockUploadata();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(
|
|
||||||
horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white(
|
|
||||||
"Block user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/blockchat.png",
|
|
||||||
height: 25.h,
|
|
||||||
width: 25.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
child: Container(
|
|
||||||
height: 20,
|
|
||||||
width: 20,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Group 1000004071.png",
|
|
||||||
height: 22.h,
|
|
||||||
width: 4.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
|
||||||
])
|
|
||||||
]))
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildNoDataBody(context) {
|
|
||||||
return Center(
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
"No Data Found",
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 16.sp,
|
|
||||||
fontWeight: FontWeight.w600),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,343 +0,0 @@
|
|||||||
import 'dart:async';
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Common/base_manager.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/Model/followingModel.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/view_model/profileGetmethod.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/view_model/profilePostmethod.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/dialogs.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
|
||||||
|
|
||||||
class Following extends StatefulWidget {
|
|
||||||
const Following({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<Following> createState() => _FollowingState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _FollowingState extends State<Following> {
|
|
||||||
StreamController<FollowingModel> searchcontroller = StreamController();
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
// TODO: implement initState
|
|
||||||
var updata = "";
|
|
||||||
Profilegetmethod().getFollowing(updata, streamController: searchcontroller);
|
|
||||||
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void dispose() {
|
|
||||||
searchcontroller.close();
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
Uploadata() async {
|
|
||||||
utils.loader();
|
|
||||||
Map<String, dynamic> updata = {
|
|
||||||
"following_iam_principal_xid": unfollowid,
|
|
||||||
};
|
|
||||||
final data = await Profilepostmethod().postunfollowuser(updata);
|
|
||||||
if (data.status == ResponseStatus.SUCCESS) {
|
|
||||||
Get.back();
|
|
||||||
print("unfollow done");
|
|
||||||
// setState(() {
|
|
||||||
// // Assuming followingobj is a list of items, remove the item with matching user ID
|
|
||||||
// followingobj!.data!.removeWhere((item) => item.following!.id == userid);
|
|
||||||
// });
|
|
||||||
return utils.showToast(data.message);
|
|
||||||
} else {
|
|
||||||
Get.back();
|
|
||||||
print("unfollow not done");
|
|
||||||
return utils.showToast(data.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int? unfollowid;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Following",
|
|
||||||
),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
SingleChildScrollView(
|
|
||||||
child: Column(children: [
|
|
||||||
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: CustomTextFormField(
|
|
||||||
leadingIcon: SizedBox(
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/ion_search-outline.png",
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "Search people",
|
|
||||||
texttype: TextInputType.text,
|
|
||||||
inputFormatters: [
|
|
||||||
// LengthLimitingTextInputFormatter(20),
|
|
||||||
RemoveEmojiInputFormatter(),
|
|
||||||
],
|
|
||||||
onInput: (value) {
|
|
||||||
// Onboard().postGroupsearch({"search": value},
|
|
||||||
// streamController: searchcontroller);
|
|
||||||
// searchGroups(value!);
|
|
||||||
Profilegetmethod().getFollowing(value,
|
|
||||||
streamController: searchcontroller);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
StreamBuilder<FollowingModel>(
|
|
||||||
stream: searchcontroller.stream,
|
|
||||||
builder: (ctx, snapshot) {
|
|
||||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
|
||||||
// Display shimmer effect while waiting for data
|
|
||||||
return Center(child: CircularProgressIndicator());
|
|
||||||
} else if (snapshot.hasError) {
|
|
||||||
// Handle error state
|
|
||||||
return Center(
|
|
||||||
child: Text(
|
|
||||||
'${snapshot.error} occurred',
|
|
||||||
style: TextStyle(fontSize: 18),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
// Data has been loaded, show actual UI
|
|
||||||
return followingobj!.data!.isEmpty
|
|
||||||
? _buildNoDataBody(context)
|
|
||||||
: ListView.separated(
|
|
||||||
physics: ScrollPhysics(),
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: followingobj!.data!.length,
|
|
||||||
separatorBuilder:
|
|
||||||
(BuildContext context, int index) {
|
|
||||||
return commonDivider();
|
|
||||||
},
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return
|
|
||||||
// Column(
|
|
||||||
// children: [
|
|
||||||
// Followinglist(
|
|
||||||
// imagePath: followingobj?.data?[index]
|
|
||||||
// .following?.profilePhoto ??
|
|
||||||
// '',
|
|
||||||
// title: followingobj!
|
|
||||||
// .data?[index].following?.fullName ??
|
|
||||||
// '',
|
|
||||||
// subtitle: followingobj!
|
|
||||||
// .data?[index].following?.userName ??
|
|
||||||
// '',
|
|
||||||
// unfollowontap: (id) => Uploadata(id),
|
|
||||||
// unfollowindex: followingobj!
|
|
||||||
// .data![index].following!.id!,
|
|
||||||
// ),
|
|
||||||
// if (index != followingobj!.data!.length - 1)
|
|
||||||
// commonDivider(),
|
|
||||||
// ],
|
|
||||||
// );
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(
|
|
||||||
vertical: 16.h, horizontal: 16.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
followingobj!.data![index].following!
|
|
||||||
.profilePhoto ==
|
|
||||||
null ||
|
|
||||||
followingobj!
|
|
||||||
.data![index]
|
|
||||||
.following!
|
|
||||||
.profilePhoto!
|
|
||||||
.isEmpty
|
|
||||||
? CircleAvatar(
|
|
||||||
backgroundImage: AssetImage(
|
|
||||||
'assets/images/png/Ellipse 43.png'),
|
|
||||||
radius: 25.r,
|
|
||||||
)
|
|
||||||
: CircleAvatar(
|
|
||||||
backgroundImage: NetworkImage(
|
|
||||||
followingobj!
|
|
||||||
.data![index]
|
|
||||||
.following!
|
|
||||||
.profilePhoto!),
|
|
||||||
radius: 25.r,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(10.w),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment:
|
|
||||||
CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
followingobj!
|
|
||||||
.data![index]
|
|
||||||
.following!
|
|
||||||
.fullName ==
|
|
||||||
null ||
|
|
||||||
followingobj!
|
|
||||||
.data![index]
|
|
||||||
.following!
|
|
||||||
.fullName!
|
|
||||||
.isEmpty
|
|
||||||
? text16w400_FCFCFC("Regroup")
|
|
||||||
: text16w400_FCFCFC(
|
|
||||||
followingobj!.data![index]
|
|
||||||
.following!.fullName!),
|
|
||||||
sizedBoxHeight(4.h),
|
|
||||||
followingobj!
|
|
||||||
.data![index]
|
|
||||||
.following!
|
|
||||||
.userName ==
|
|
||||||
null ||
|
|
||||||
followingobj!
|
|
||||||
.data![index]
|
|
||||||
.following!
|
|
||||||
.userName!
|
|
||||||
.isEmpty
|
|
||||||
? text12w400_FCFCFC_blur(
|
|
||||||
"regroup")
|
|
||||||
: text12w400_FCFCFC_blur(
|
|
||||||
followingobj!.data![index]
|
|
||||||
.following!.userName!)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
PopupMenuButton(
|
|
||||||
surfaceTintColor: Color(0xFF222935),
|
|
||||||
constraints:
|
|
||||||
BoxConstraints.tightFor(
|
|
||||||
width: 176.w),
|
|
||||||
offset: Offset(0, 20),
|
|
||||||
color: Color(0xFF222935),
|
|
||||||
tooltip: "",
|
|
||||||
itemBuilder: (BuildContext
|
|
||||||
context) =>
|
|
||||||
<PopupMenuEntry>[
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () async {
|
|
||||||
setState(() {
|
|
||||||
unfollowid =
|
|
||||||
followingobj!
|
|
||||||
.data![
|
|
||||||
index]
|
|
||||||
.following!
|
|
||||||
.id ??
|
|
||||||
0;
|
|
||||||
// followingobj!.data!.removeAt(index);
|
|
||||||
followingobj!.data!
|
|
||||||
.removeWhere((item) =>
|
|
||||||
item.following!
|
|
||||||
.id ==
|
|
||||||
unfollowid);
|
|
||||||
Uploadata();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(
|
|
||||||
horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white(
|
|
||||||
"Unfollow user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/Black1323e.png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(
|
|
||||||
horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white(
|
|
||||||
"Message user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/fluent_chat-20-22.png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
child: Container(
|
|
||||||
height: 20,
|
|
||||||
width: 20,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Group 1000004071.png",
|
|
||||||
height: 22.h,
|
|
||||||
width: 4.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
|
||||||
])
|
|
||||||
]))
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildNoDataBody(context) {
|
|
||||||
return Center(
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
"No Data Found",
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 16.sp,
|
|
||||||
fontWeight: FontWeight.w600),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,813 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_reaction_button/flutter_reaction_button.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/EditProfile/ViewModel/EditProfileApi.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:regroup/resources/routes/route_name.dart';
|
|
||||||
|
|
||||||
class profiletabBusGest extends StatefulWidget {
|
|
||||||
const profiletabBusGest({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<profiletabBusGest> createState() => _profiletabBusGestState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _profiletabBusGestState extends State<profiletabBusGest> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
// accountTypeValue == '1' ||
|
|
||||||
body:
|
|
||||||
// FutureBuilder(
|
|
||||||
// future: businessfuture,
|
|
||||||
// builder: (ctx, snapshot) {
|
|
||||||
// if (snapshot.connectionState == ConnectionState.waiting) {
|
|
||||||
// return Center(
|
|
||||||
// child: CircularProgressIndicator(
|
|
||||||
// color: Colors.blue,
|
|
||||||
// ),
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (snapshot.hasError) {
|
|
||||||
// return Center(
|
|
||||||
// child: Text(
|
|
||||||
// '${snapshot.error} occurred',
|
|
||||||
// style: TextStyle(fontSize: 18.spMin),
|
|
||||||
// ),
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (snapshot.connectionState == ConnectionState.done &&
|
|
||||||
// snapshot.hasData) {
|
|
||||||
// print("Data fetched-->");
|
|
||||||
// return
|
|
||||||
|
|
||||||
Stack(clipBehavior: Clip.none, children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
SafeArea(
|
|
||||||
child: SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Stack(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
height: 484.h,
|
|
||||||
width: double.infinity,
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Rectangle 49 (1).png",
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Positioned.fill(
|
|
||||||
child: Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
gradient: LinearGradient(
|
|
||||||
begin: Alignment.topCenter,
|
|
||||||
end: Alignment.bottomCenter,
|
|
||||||
colors: [
|
|
||||||
Color.fromRGBO(34, 41, 53, 0.1),
|
|
||||||
Color.fromRGBO(34, 41, 53, 0.79),
|
|
||||||
],
|
|
||||||
stops: [
|
|
||||||
0.5788,
|
|
||||||
0.8,
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
bottom: 0,
|
|
||||||
right: 0,
|
|
||||||
left: 0,
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
text20700white(
|
|
||||||
"Victory gear sports emporium"),
|
|
||||||
sizedBoxHeight(5.h),
|
|
||||||
text18w400white("@Victorygames_10"),
|
|
||||||
sizedBoxHeight(15.h),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.followers);
|
|
||||||
},
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
text16400white("254"),
|
|
||||||
sizedBoxHeight(6.h),
|
|
||||||
text12400whiteblur("Followers")
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(20.w),
|
|
||||||
Container(
|
|
||||||
height: 58.h,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Colors.white,
|
|
||||||
border: Border.all(
|
|
||||||
color: Colors.white,
|
|
||||||
width: 1.0,
|
|
||||||
),
|
|
||||||
boxShadow: [
|
|
||||||
BoxShadow(
|
|
||||||
color: Color(0x66000000),
|
|
||||||
offset: Offset(0, 4),
|
|
||||||
blurRadius: 4.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(20.w),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.following);
|
|
||||||
},
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
text16400white("344"),
|
|
||||||
sizedBoxHeight(6.h),
|
|
||||||
text12400whiteblur("Following")
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.buseditprofile);
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 40.h,
|
|
||||||
width: 170.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Color(0xFFD90B2E),
|
|
||||||
borderRadius: BorderRadius.circular(30.r),
|
|
||||||
),
|
|
||||||
child:
|
|
||||||
Center(child: text16w400_FCFCFC("Follow")),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.shareProfile);
|
|
||||||
},
|
|
||||||
child: commonGlassUI(
|
|
||||||
width: 170.w,
|
|
||||||
height: 40.h,
|
|
||||||
|
|
||||||
opacity1: 0.05,
|
|
||||||
opacity2: 0.07,
|
|
||||||
borderRadius: BorderRadius.circular(30.r),
|
|
||||||
mainOpacity: 1,
|
|
||||||
customWidget: Center(
|
|
||||||
child: text16w400_FCFCFC("Message"),
|
|
||||||
),
|
|
||||||
// border: 1,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
text18w700white("About"),
|
|
||||||
sizedBoxHeight(10.h),
|
|
||||||
text14400white(
|
|
||||||
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s."),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
commonContainer(
|
|
||||||
width: 25.w,
|
|
||||||
height: 25.h,
|
|
||||||
opacity1: 0.26,
|
|
||||||
opacity2: 0.26,
|
|
||||||
borderwidth: 0.5,
|
|
||||||
boxShape: BoxShape.circle,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Frame 24.png",
|
|
||||||
height: 12.h,
|
|
||||||
width: 12.w,
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text14400whiteblur("James Bothman"),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
commonContainer(
|
|
||||||
width: 25.w,
|
|
||||||
height: 25.h,
|
|
||||||
opacity1: 0.26,
|
|
||||||
opacity2: 0.26,
|
|
||||||
borderwidth: 0.5,
|
|
||||||
boxShape: BoxShape.circle,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Vector2a.png",
|
|
||||||
height: 12.h,
|
|
||||||
width: 12.w,
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text14400whiteblur("www.exampledummywebsite.com"),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
commonContainer(
|
|
||||||
width: 25.w,
|
|
||||||
height: 25.h,
|
|
||||||
opacity1: 0.26,
|
|
||||||
opacity2: 0.26,
|
|
||||||
borderwidth: 0.5,
|
|
||||||
boxShape: BoxShape.circle,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Group 58645.png",
|
|
||||||
height: 12.h,
|
|
||||||
width: 12.w,
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text14400whiteblur(
|
|
||||||
"Elm street london, United Kingdom"),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
commonContainer(
|
|
||||||
width: 25.w,
|
|
||||||
height: 25.h,
|
|
||||||
opacity1: 0.26,
|
|
||||||
opacity2: 0.26,
|
|
||||||
borderwidth: 0.5,
|
|
||||||
boxShape: BoxShape.circle,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/calender.png",
|
|
||||||
height: 12.h,
|
|
||||||
width: 12.w,
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
// text14400whiteblur(getEditProfileIndi!
|
|
||||||
// .data!.interest!
|
|
||||||
// .join(', ')),
|
|
||||||
text14400whiteblur("Founded at : 2010"),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.only(left: 16.w),
|
|
||||||
child: text18w700white("Posts"),
|
|
||||||
),
|
|
||||||
normalcardtile(
|
|
||||||
profileImg: 'assets/images/png/Ellipse 48.png',
|
|
||||||
title: 'Jocelyn Dokidis',
|
|
||||||
mainImg: 'assets/images/png/Rectangle 46.png',
|
|
||||||
containerTitle: [
|
|
||||||
'Race',
|
|
||||||
'Swimming',
|
|
||||||
'Events',
|
|
||||||
'Marathon',
|
|
||||||
'Events'
|
|
||||||
]),
|
|
||||||
sizedBoxHeight(120.h),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Positioned.fill(
|
|
||||||
top: 40.h,
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Spacer(),
|
|
||||||
commonContainer(
|
|
||||||
width: 40.w,
|
|
||||||
height: 40.h,
|
|
||||||
borderwidth: 0.5,
|
|
||||||
boxShape: BoxShape.circle,
|
|
||||||
opacity1: 0.5,
|
|
||||||
opacity2: 0.6,
|
|
||||||
customWidget: PopupMenuButton(
|
|
||||||
surfaceTintColor: const Color(0xFF222935),
|
|
||||||
constraints: BoxConstraints.tightFor(width: 200.w),
|
|
||||||
offset: const Offset(0, 50),
|
|
||||||
color: const Color(0xFF222935),
|
|
||||||
tooltip: "",
|
|
||||||
itemBuilder: (BuildContext context) =>
|
|
||||||
<PopupMenuEntry>[
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.shareProfile);
|
|
||||||
},
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Share profile',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/share.png",
|
|
||||||
height: 17.h,
|
|
||||||
width: 17.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Report user',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/Vector (5).png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Block user',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/blocked.png",
|
|
||||||
height: 18.h,
|
|
||||||
width: 18.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Group 1000004071.png',
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget normalcardtile({
|
|
||||||
required String profileImg,
|
|
||||||
required String title,
|
|
||||||
required String mainImg,
|
|
||||||
required List<String> containerTitle,
|
|
||||||
}) {
|
|
||||||
var mainImage = 'assets/images/png/uiw_like-o.png'.obs;
|
|
||||||
void updateImage(String reaction) {
|
|
||||||
if (reaction == 'like') {
|
|
||||||
mainImage.value = 'assets/images/png/f7_hand-thumbsup.png';
|
|
||||||
} else if (reaction == 'heart') {
|
|
||||||
mainImage.value = 'assets/images/png/heart 2.png';
|
|
||||||
} else if (reaction == 'party') {
|
|
||||||
mainImage.value = 'assets/images/png/party-popper 2.png';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
CircleAvatar(
|
|
||||||
foregroundImage: AssetImage(profileImg),
|
|
||||||
radius: 25.r,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text16w400_FCFCFC(title),
|
|
||||||
sizedBoxHeight(5.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/community 1 (traced).png',
|
|
||||||
height: 14.w,
|
|
||||||
width: 14.w,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(7.w),
|
|
||||||
text12w400_FCFCFC('Active alliance network'),
|
|
||||||
sizedBoxWidth(7.w),
|
|
||||||
Icon(
|
|
||||||
Icons.circle,
|
|
||||||
color: Color(0xFFFCFCFC),
|
|
||||||
size: 4.sp,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(6.w),
|
|
||||||
text12w400_FCFCFC('1 Hour ago'),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
PopupMenuButton(
|
|
||||||
surfaceTintColor: Color(0xFF222935),
|
|
||||||
constraints: BoxConstraints.tightFor(width: 176.w),
|
|
||||||
offset: Offset(0, 50),
|
|
||||||
color: Color(0xFF222935),
|
|
||||||
tooltip: "",
|
|
||||||
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Report Post',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/Vector (5).png",
|
|
||||||
height: 15.h,
|
|
||||||
width: 15.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Share post',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/share.png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'Pin',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 16.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w800,
|
|
||||||
fontFamily: "Nunito Sans",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/f7_pin-fill (2).png",
|
|
||||||
height: 25.h,
|
|
||||||
width: 25.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Group 1000004071.png',
|
|
||||||
width: 16.w,
|
|
||||||
height: 18.h,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(5.w)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.postdetailsScreen);
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 163.h,
|
|
||||||
width: double.infinity,
|
|
||||||
child: Image.asset(
|
|
||||||
mainImg,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Column(children: [
|
|
||||||
SizedBox(
|
|
||||||
height: 30.h,
|
|
||||||
child: ListView.builder(
|
|
||||||
scrollDirection: Axis.horizontal,
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: containerTitle.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.only(right: 12.w),
|
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
// Get.toNamed(RouteName.cyclescreen);
|
|
||||||
},
|
|
||||||
child: containertile(text: containerTitle[index])),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
text16w400_FCFCFC(
|
|
||||||
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s . . ."),
|
|
||||||
Row(children: [
|
|
||||||
stackReaction(number: '20', containerImages: [
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png',
|
|
||||||
'assets/images/png/heart 2.png',
|
|
||||||
'assets/images/png/party-popper 2.png'
|
|
||||||
]),
|
|
||||||
Spacer(),
|
|
||||||
commonContainer(
|
|
||||||
width: 30.w,
|
|
||||||
height: 30.h,
|
|
||||||
opacity1: 0.2,
|
|
||||||
opacity2: 0.2,
|
|
||||||
borderwidth: 0.43,
|
|
||||||
boxShape: BoxShape.circle,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Frame 1000004088.png',
|
|
||||||
height: 13.h,
|
|
||||||
width: 13.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text14w400_FCFCFC('20'),
|
|
||||||
sizedBoxWidth(20.w),
|
|
||||||
commonContainer(
|
|
||||||
width: 30.w,
|
|
||||||
height: 30.h,
|
|
||||||
opacity1: 0.2,
|
|
||||||
opacity2: 0.2,
|
|
||||||
borderwidth: 0.43,
|
|
||||||
boxShape: BoxShape.circle,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/Vector (1).png',
|
|
||||||
height: 12.h,
|
|
||||||
width: 12.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text14w400_FCFCFC('10'),
|
|
||||||
]),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
children: [
|
|
||||||
Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Obx(() {
|
|
||||||
return ReactionButton<String>(
|
|
||||||
onReactionChanged: (reaction) {
|
|
||||||
updateImage(reaction?.value ?? 'like');
|
|
||||||
debugPrint('Selected value: ${reaction?.value}');
|
|
||||||
},
|
|
||||||
reactions: <Reaction<String>?>[
|
|
||||||
Reaction<String>(
|
|
||||||
value: 'like',
|
|
||||||
previewIcon: _buildReactionsPreviewIcon(
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png'),
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png'),
|
|
||||||
),
|
|
||||||
Reaction<String>(
|
|
||||||
value: 'heart',
|
|
||||||
previewIcon: _buildReactionsPreviewIcon(
|
|
||||||
'assets/images/png/heart 2.png'),
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/heart 2.png'),
|
|
||||||
),
|
|
||||||
Reaction<String>(
|
|
||||||
value: 'party',
|
|
||||||
previewIcon: _buildReactionsPreviewIcon(
|
|
||||||
'assets/images/png/party-popper 2.png'),
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/party-popper 2.png'),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
selectedReaction: Reaction<String>(
|
|
||||||
value: 'like',
|
|
||||||
icon: _buildReactionsIcon(
|
|
||||||
'assets/images/png/f7_hand-thumbsup.png'),
|
|
||||||
),
|
|
||||||
boxColor: Colors.white,
|
|
||||||
boxElevation: 9,
|
|
||||||
boxRadius: 30,
|
|
||||||
itemsSpacing: 8,
|
|
||||||
itemScale: 0.4,
|
|
||||||
itemSize: Size(45, 45),
|
|
||||||
boxPadding: EdgeInsets.all(8),
|
|
||||||
boxAnimationDuration: Duration(milliseconds: 200),
|
|
||||||
itemAnimationDuration: Duration(milliseconds: 500),
|
|
||||||
hoverDuration: Duration(milliseconds: 700),
|
|
||||||
// toggle: false,
|
|
||||||
|
|
||||||
child: _buildReactionsIcon(mainImage.value),
|
|
||||||
);
|
|
||||||
})
|
|
||||||
],
|
|
||||||
),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.postdetailsScreen);
|
|
||||||
},
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/Frame 1000004088.png',
|
|
||||||
height: 19.h,
|
|
||||||
width: 19.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
text11w400_FCFCFC('Comment')
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/Frame 1000004089.png',
|
|
||||||
height: 19.h,
|
|
||||||
width: 19.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
text11w400_FCFCFC('Save')
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildReactionsPreviewIcon(String assetPath) {
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.all(8.0),
|
|
||||||
child: Image.asset(
|
|
||||||
assetPath,
|
|
||||||
height: 40.h,
|
|
||||||
width: 40.w,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildReactionsIcon(String assetPath) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
assetPath,
|
|
||||||
height: 19.h,
|
|
||||||
width: 19.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
text11w400_FCFCFC('Like')
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget containertile({required String text}) {
|
|
||||||
return commonContainer(
|
|
||||||
width: 100.w,
|
|
||||||
height: 30.h,
|
|
||||||
borderRadius: BorderRadius.circular(30.r),
|
|
||||||
borderColor: Color(0xFFD90B2E),
|
|
||||||
borderwidth: 0.9,
|
|
||||||
customWidget: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 10.w),
|
|
||||||
child: Center(child: text14w400_FCFCFC(text)),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
@@ -1,410 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:regroup/Common/CommonTabBar.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
|
|
||||||
class MyNetwork extends StatefulWidget {
|
|
||||||
const MyNetwork({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<MyNetwork> createState() => _MyNetworkState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _MyNetworkState extends State<MyNetwork> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "My networks",
|
|
||||||
),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
Expanded(
|
|
||||||
child: DefaultTabController(
|
|
||||||
length: 2,
|
|
||||||
// initialIndex: selectedIndex.value,
|
|
||||||
child: Column(children: [
|
|
||||||
CommonTabBar(tabs: const [
|
|
||||||
Tab(
|
|
||||||
text: 'Followers',
|
|
||||||
),
|
|
||||||
Tab(
|
|
||||||
text: 'Following',
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
Expanded(
|
|
||||||
child: TabBarView(
|
|
||||||
children: [
|
|
||||||
followersTab(),
|
|
||||||
followingTab(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
])),
|
|
||||||
)
|
|
||||||
])
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget followersTab() {
|
|
||||||
List followersData = [
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 52.png",
|
|
||||||
"title": "Iron titans fitness crew",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 48.png",
|
|
||||||
"title": "Body blitz brigade",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 43.png",
|
|
||||||
"title": "Fit fusion squad",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 37.png",
|
|
||||||
"title": "Power pulse posse",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 52.png",
|
|
||||||
"title": "Iron titans fitness crew",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 48.png",
|
|
||||||
"title": "Body blitz brigade",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
|
||||||
child: CustomTextFormField(
|
|
||||||
leadingIcon: SizedBox(
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/ion_search-outline.png",
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "Search people",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
ListView.separated(
|
|
||||||
physics: ScrollPhysics(),
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: followersData.length,
|
|
||||||
separatorBuilder: (BuildContext context, int index) {
|
|
||||||
return commonDivider();
|
|
||||||
},
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(vertical: 16.h, horizontal: 16.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
CircleAvatar(
|
|
||||||
backgroundImage:
|
|
||||||
AssetImage(followersData[index]["imagePath"]),
|
|
||||||
radius: 25.r,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(10.w),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text16w400_FCFCFC(followersData[index]["title"]),
|
|
||||||
sizedBoxHeight(4.h),
|
|
||||||
text12w400_FCFCFC_blur(
|
|
||||||
followersData[index]["subtitle"])
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
PopupMenuButton(
|
|
||||||
surfaceTintColor: Color(0xFF222935),
|
|
||||||
constraints: BoxConstraints.tightFor(width: 176.w),
|
|
||||||
offset: Offset(0, 20),
|
|
||||||
color: Color(0xFF222935),
|
|
||||||
tooltip: "",
|
|
||||||
itemBuilder: (BuildContext context) =>
|
|
||||||
<PopupMenuEntry>[
|
|
||||||
PopupMenuItem(
|
|
||||||
// onTap: () {},
|
|
||||||
onTap: () async {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white("Remove user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/fluent_delete-28-regular.png",
|
|
||||||
height: 15.h,
|
|
||||||
width: 15.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white("Message user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/fluent_chat-20-regular.png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () async {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white("Block user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/blockchat.png",
|
|
||||||
height: 25.h,
|
|
||||||
width: 25.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
child: Container(
|
|
||||||
height: 20,
|
|
||||||
width: 20,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Group 1000004071.png",
|
|
||||||
height: 22.h,
|
|
||||||
width: 4.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget followingTab() {
|
|
||||||
List followingData = [
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 52.png",
|
|
||||||
"title": "Iron titans fitness crew",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 48.png",
|
|
||||||
"title": "Body blitz brigade",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 43.png",
|
|
||||||
"title": "Fit fusion squad",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 37.png",
|
|
||||||
"title": "Power pulse posse",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 52.png",
|
|
||||||
"title": "Iron titans fitness crew",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 48.png",
|
|
||||||
"title": "Body blitz brigade",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
|
||||||
child: CustomTextFormField(
|
|
||||||
leadingIcon: SizedBox(
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/ion_search-outline.png",
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "Search people",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
ListView.separated(
|
|
||||||
physics: ScrollPhysics(),
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: followingData.length,
|
|
||||||
separatorBuilder: (BuildContext context, int index) {
|
|
||||||
return commonDivider();
|
|
||||||
},
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(vertical: 16.h, horizontal: 16.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
CircleAvatar(
|
|
||||||
backgroundImage:
|
|
||||||
AssetImage(followingData[index]["imagePath"]),
|
|
||||||
radius: 25.r,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(10.w),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text16w400_FCFCFC(followingData[index]["title"]),
|
|
||||||
sizedBoxHeight(4.h),
|
|
||||||
text12w400_FCFCFC_blur(
|
|
||||||
followingData[index]["subtitle"])
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
PopupMenuButton(
|
|
||||||
surfaceTintColor: Color(0xFF222935),
|
|
||||||
constraints: BoxConstraints.tightFor(width: 176.w),
|
|
||||||
offset: Offset(0, 20),
|
|
||||||
color: Color(0xFF222935),
|
|
||||||
tooltip: "",
|
|
||||||
itemBuilder: (BuildContext context) =>
|
|
||||||
<PopupMenuEntry>[
|
|
||||||
PopupMenuItem(
|
|
||||||
// onTap: () {},
|
|
||||||
onTap: () async {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white("Remove user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/fluent_delete-28-regular.png",
|
|
||||||
height: 15.h,
|
|
||||||
width: 15.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white("Message user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/fluent_chat-20-regular.png",
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuDivider(),
|
|
||||||
PopupMenuItem(
|
|
||||||
onTap: () async {},
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
text14400white("Block user"),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/blockchat.png",
|
|
||||||
height: 25.h,
|
|
||||||
width: 25.w,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
child: Container(
|
|
||||||
height: 20,
|
|
||||||
width: 20,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Group 1000004071.png",
|
|
||||||
height: 22.h,
|
|
||||||
width: 4.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
|
|
||||||
class AccountSession extends StatefulWidget {
|
|
||||||
const AccountSession({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<AccountSession> createState() => _AccountSessionState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _AccountSessionState extends State<AccountSession> {
|
|
||||||
List sessionData = [
|
|
||||||
"london, United Kingdom",
|
|
||||||
"Elm street london, United Kingdom",
|
|
||||||
"Elm street london, United Kingdom"
|
|
||||||
];
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Account sessions",
|
|
||||||
),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"), fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child:
|
|
||||||
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text18w400white("Last login sessions"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
ListView.builder(
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: sessionData.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return sessionCard(title: sessionData[index]);
|
|
||||||
},
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
)
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget sessionCard({required String title}) {
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 15),
|
|
||||||
child: commonGlassContainer(
|
|
||||||
width: double.infinity,
|
|
||||||
height: 90.h,
|
|
||||||
borderradius: 10.r,
|
|
||||||
customWidget: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
commonGlassContainer(
|
|
||||||
width: 25.w,
|
|
||||||
height: 25.h,
|
|
||||||
opacity1: 0.24,
|
|
||||||
opacity2: 0.24,
|
|
||||||
borderradius: 100,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Group 58645.png",
|
|
||||||
height: 13.h,
|
|
||||||
width: 9.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
border: 1),
|
|
||||||
sizedBoxWidth(10.w),
|
|
||||||
text16400white(title),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
text14400whiteblur("Apple iPhone 15"),
|
|
||||||
sizedBoxWidth(6.w),
|
|
||||||
Icon(
|
|
||||||
Icons.circle,
|
|
||||||
size: 7.sp,
|
|
||||||
color: Colors.white,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(6.w),
|
|
||||||
text144005DFD63("192.158.1.38")
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
border: 1),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:regroup/Common/CommonButton.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
|
|
||||||
class DeleteAccount extends StatefulWidget {
|
|
||||||
const DeleteAccount({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<DeleteAccount> createState() => _DeleteAccountState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _DeleteAccountState extends State<DeleteAccount> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "",
|
|
||||||
),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"), fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
SingleChildScrollView(
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
|
||||||
child: Column(children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text20400white("Sad to see you go"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/Frame 1.png",
|
|
||||||
height: 119.h,
|
|
||||||
width: 119.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
SizedBox(
|
|
||||||
width: 311.w,
|
|
||||||
child: text16400white(
|
|
||||||
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type ",
|
|
||||||
textAlign: TextAlign.center),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
text18w400white("Tell us why you are leaving ?"),
|
|
||||||
sizedBoxHeight(10.h),
|
|
||||||
CustomTextFormField2(
|
|
||||||
maxlines: 3,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
CommonBtn(text: "I don’t want to delete"),
|
|
||||||
sizedBoxHeight(18.h),
|
|
||||||
text16400white("Yes I am ready to delete my account"),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:regroup/resources/routes/route_name.dart';
|
|
||||||
|
|
||||||
class HelpAndSupport extends StatefulWidget {
|
|
||||||
const HelpAndSupport({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<HelpAndSupport> createState() => _HelpAndSupportState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _HelpAndSupportState extends State<HelpAndSupport> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Help & Support",
|
|
||||||
),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"), fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.faqscreen);
|
|
||||||
},
|
|
||||||
child: rowTile(
|
|
||||||
imagePath: "assets/images/png/Vectorftt.png",
|
|
||||||
text: "FAQ",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
commonDivider(),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.contactUs);
|
|
||||||
},
|
|
||||||
child: rowTile(
|
|
||||||
imagePath:
|
|
||||||
"assets/images/png/fluent_person-support-20-regular.png",
|
|
||||||
text: "Contact us",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
commonDivider(),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.reportabug);
|
|
||||||
},
|
|
||||||
child: rowTile(
|
|
||||||
imagePath: "assets/images/png/codicon_bug.png",
|
|
||||||
text: "Report a bug",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]))
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget rowTile({
|
|
||||||
required String imagePath,
|
|
||||||
required String text,
|
|
||||||
}) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h),
|
|
||||||
child: Row(children: [
|
|
||||||
Image.asset(
|
|
||||||
imagePath,
|
|
||||||
height: 21.h,
|
|
||||||
width: 21.w,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(12.w),
|
|
||||||
text16w400_FCFCFC(text),
|
|
||||||
Spacer(),
|
|
||||||
Icon(
|
|
||||||
Icons.arrow_forward_ios,
|
|
||||||
color: Colors.white,
|
|
||||||
size: 20,
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,318 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Common/base_manager.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/Settings/ViewModel/BlockedUserApi.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
|
||||||
|
|
||||||
class BlockedUsers extends StatefulWidget {
|
|
||||||
const BlockedUsers({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<BlockedUsers> createState() => _BlockedUsersState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _BlockedUsersState extends State<BlockedUsers> {
|
|
||||||
List blockedUserData = [
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg1.png",
|
|
||||||
"title": "Ryan Dorwart",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg2.png",
|
|
||||||
"title": "Ahmad Rhiel Madsen",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg3.png",
|
|
||||||
"title": "Kaylynn Vaccaro",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/cimg4.png",
|
|
||||||
"title": "Kianna Donin",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 43.png",
|
|
||||||
"title": "Maria Herwitz",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Ellipse 52.png",
|
|
||||||
"title": "Ahmad Rhiel Madsen",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/img2.png",
|
|
||||||
"title": "Kaylynn Vaccaro",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
late Future myfuture;
|
|
||||||
double? blockedXid;
|
|
||||||
|
|
||||||
unblockDone(int index) async {
|
|
||||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
||||||
await prefs.setInt('blockedprincipalxid',
|
|
||||||
fetchblockuser!.data![index].blockedIamPrincipalXid!);
|
|
||||||
blockedXid = prefs.getInt('blockedprincipalxid')!.toDouble();
|
|
||||||
Map<String, String> updata = {
|
|
||||||
"blocked_iam_principal_xid": blockedXid.toString(),
|
|
||||||
};
|
|
||||||
final resp = await BlockUserAPI().postBlockApi(updata);
|
|
||||||
if (resp.status == ResponseStatus.SUCCESS) {
|
|
||||||
Get.snackbar(
|
|
||||||
"Success!",
|
|
||||||
'Unblock user successfully',
|
|
||||||
duration: Duration(seconds: 2),
|
|
||||||
colorText: Colors.white,
|
|
||||||
backgroundColor: Colors.green,
|
|
||||||
margin: EdgeInsets.all(8),
|
|
||||||
snackStyle: SnackStyle.FLOATING,
|
|
||||||
snackPosition: SnackPosition.BOTTOM,
|
|
||||||
);
|
|
||||||
// utils.showToast('Unblock user successfully');
|
|
||||||
|
|
||||||
setState(() {
|
|
||||||
fetchblockuser!.data!.removeAt(index);
|
|
||||||
});
|
|
||||||
print('success');
|
|
||||||
} else {
|
|
||||||
// btnController.error();
|
|
||||||
// btnController.reset();
|
|
||||||
Get.snackbar(
|
|
||||||
"Error!",
|
|
||||||
resp.data['message'],
|
|
||||||
duration: Duration(seconds: 2),
|
|
||||||
colorText: Colors.white,
|
|
||||||
backgroundColor: Colors.red,
|
|
||||||
margin: EdgeInsets.all(8),
|
|
||||||
snackStyle: SnackStyle.FLOATING,
|
|
||||||
snackPosition: SnackPosition.BOTTOM,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
myfuture = BlockUserAPI().fetchBlockUser();
|
|
||||||
// TODO: implement initState
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Blocked users",
|
|
||||||
),
|
|
||||||
body: FutureBuilder(
|
|
||||||
future: myfuture,
|
|
||||||
builder: (ctx, snapshot) {
|
|
||||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
|
||||||
return Center(
|
|
||||||
child: CircularProgressIndicator(
|
|
||||||
color: Colors.blue,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (snapshot.hasError) {
|
|
||||||
return Center(
|
|
||||||
child: Text(
|
|
||||||
'${snapshot.error} occurred',
|
|
||||||
style: TextStyle(fontSize: 18.spMin),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (snapshot.connectionState == ConnectionState.done &&
|
|
||||||
snapshot.hasData) {
|
|
||||||
print("Data fetched-->");
|
|
||||||
return Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage(
|
|
||||||
"assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
|
||||||
child: CustomTextFormField(
|
|
||||||
leadingIcon: SizedBox(
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/ion_search-outline.png",
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "Search people",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Expanded(
|
|
||||||
child: ListView.builder(
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: fetchblockuser!.data!.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
blockedUser(
|
|
||||||
imagePath: fetchblockuser!.data![index]
|
|
||||||
.blockedProfile!.profilePhoto ??
|
|
||||||
'',
|
|
||||||
title: fetchblockuser!.data![index]
|
|
||||||
.blockedProfile!.fullName ??
|
|
||||||
'',
|
|
||||||
subtitle: fetchblockuser!.data![index]
|
|
||||||
.blockedProfile!.userName ??
|
|
||||||
'',
|
|
||||||
index: index),
|
|
||||||
// blockedUser(
|
|
||||||
// imagePath: blockedUserData[index]
|
|
||||||
// ["imagePath"],
|
|
||||||
// title: blockedUserData[index]["title"],
|
|
||||||
// subtitle: blockedUserData[index]
|
|
||||||
// ["subtitle"]),
|
|
||||||
if (index != fetchblockuser!.data!.length - 1)
|
|
||||||
commonDivider(),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h)
|
|
||||||
])
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
return Container();
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
dialogwidget({required int index}) {
|
|
||||||
Get.dialog(Dialog(
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
surfaceTintColor: Colors.transparent,
|
|
||||||
child: commonGlassContainer(
|
|
||||||
width: double.infinity,
|
|
||||||
height: 200.h,
|
|
||||||
borderradius: 14,
|
|
||||||
opacity1: 0.09,
|
|
||||||
opacity2: 0.13,
|
|
||||||
customWidget: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 30.w, vertical: 30.h),
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text18w400_FCFCFC(
|
|
||||||
"Are you sure you want to unblock the user?",
|
|
||||||
textAlign: TextAlign.center),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
children: [
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.back();
|
|
||||||
},
|
|
||||||
child: commonGlassContainer(
|
|
||||||
width: 110.w,
|
|
||||||
height: 40.h,
|
|
||||||
borderradius: 30.r,
|
|
||||||
opacity1: 0.05,
|
|
||||||
opacity2: 0.07,
|
|
||||||
customWidget: Center(child: text14400white("No")),
|
|
||||||
border: 1),
|
|
||||||
),
|
|
||||||
InkWell(
|
|
||||||
onTap: () {
|
|
||||||
// Get.back();
|
|
||||||
unblockDone(index);
|
|
||||||
// await BlockUserAPI().fetchBlockUser();
|
|
||||||
Get.back();
|
|
||||||
// setState(() {});
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 40.h,
|
|
||||||
width: 110.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Color(0xFFD90B2E),
|
|
||||||
borderRadius: BorderRadius.circular(30.r),
|
|
||||||
),
|
|
||||||
child: Center(child: text14400white("Yes")),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
border: 0.8)));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget blockedUser({
|
|
||||||
required String imagePath,
|
|
||||||
required String title,
|
|
||||||
required String subtitle,
|
|
||||||
required int index,
|
|
||||||
}) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 16.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
CircleAvatar(
|
|
||||||
backgroundImage: NetworkImage(imagePath),
|
|
||||||
|
|
||||||
// AssetImage(imagePath),
|
|
||||||
radius: 25.r,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(10.w),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text16w400_FCFCFC(title),
|
|
||||||
sizedBoxHeight(4.h),
|
|
||||||
text12w400_FCFCFC_blur(subtitle),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
dialogwidget(index: index);
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 30.h,
|
|
||||||
width: 105.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
borderRadius: BorderRadius.circular(30.r),
|
|
||||||
color: Color(0xFFD90B2E)),
|
|
||||||
child: Center(child: text14w400_FCFCFC("Unblock")),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
import 'package:regroup/Common/api_urls.dart';
|
|
||||||
import 'package:regroup/Common/base_manager.dart';
|
|
||||||
import 'package:regroup/Common/controller/data/network/network_api.dart';
|
|
||||||
import 'package:regroup/Feed%20Module/Main_Screens/ProfileTab/Settings/Model/FetchBlockUser.dart';
|
|
||||||
|
|
||||||
FetchBlockedUser? fetchblockuser;
|
|
||||||
|
|
||||||
class BlockUserAPI {
|
|
||||||
BlockUserAPI();
|
|
||||||
|
|
||||||
Future<ResponseData<dynamic>> fetchBlockUser() async {
|
|
||||||
final response = await NetworkApiServices().getApi(
|
|
||||||
ApiUrls.getblockuser,
|
|
||||||
);
|
|
||||||
fetchblockuser = FetchBlockedUser.fromJson(response.data);
|
|
||||||
if (response.status == ResponseStatus.SUCCESS) {
|
|
||||||
if (response.data["status"] == "success") {
|
|
||||||
print("Success---->");
|
|
||||||
return ResponseData<dynamic>(
|
|
||||||
response.data['message'], ResponseStatus.SUCCESS,
|
|
||||||
data: response.data);
|
|
||||||
} else {
|
|
||||||
return ResponseData<dynamic>(
|
|
||||||
response.data['message'], ResponseStatus.FAILED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<ResponseData<dynamic>> postBlockApi(var data) async {
|
|
||||||
final response = await NetworkApiServices().postApi(
|
|
||||||
data,
|
|
||||||
ApiUrls.postblockuser,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (response.status == ResponseStatus.SUCCESS) {
|
|
||||||
//Map<String, dynamic> responseData = jsonDecode(response.data);
|
|
||||||
if (response.data['status'] == "success") {
|
|
||||||
return ResponseData<dynamic>(
|
|
||||||
response.data['message'], ResponseStatus.SUCCESS,
|
|
||||||
// data: response.data
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return ResponseData<dynamic>(
|
|
||||||
response.data['message'], ResponseStatus.FAILED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,16 +1,27 @@
|
|||||||
|
import 'dart:developer';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:regroup/Common/CommonButton.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
import 'package:regroup/Common/CommonWidget.dart';
|
||||||
|
import 'package:regroup/Common/base_manager.dart';
|
||||||
|
import 'package:regroup/Main_Screens/ProfileTab/Model/timelineabilityModel.dart' as timelineabilist;
|
||||||
|
|
||||||
|
import 'package:regroup/Main_Screens/ProfileTab/view_model/gettimelineability.dart';
|
||||||
|
import 'package:regroup/Main_Screens/ProfileTab/view_model/profileGetmethod.dart';
|
||||||
|
import 'package:regroup/Main_Screens/ProfileTab/view_model/profilePostmethod.dart';
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
||||||
import 'package:regroup/Utils/Common/CommonDropdown.dart';
|
import 'package:regroup/Utils/Common/CommonDropdown.dart';
|
||||||
|
import 'package:regroup/Utils/Common/CustomNextButton.dart';
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||||
|
import 'package:regroup/Utils/dialogs.dart';
|
||||||
import 'package:regroup/Utils/texts.dart';
|
import 'package:regroup/Utils/texts.dart';
|
||||||
|
import 'package:regroup/resources/routes/route_name.dart';
|
||||||
|
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:async/src/future_group.dart';
|
||||||
|
|
||||||
class AddTimeline extends StatefulWidget {
|
class AddTimeline extends StatefulWidget {
|
||||||
const AddTimeline({super.key});
|
const AddTimeline({super.key});
|
||||||
@@ -22,71 +33,323 @@ class AddTimeline extends StatefulWidget {
|
|||||||
class _AddTimelineState extends State<AddTimeline> {
|
class _AddTimelineState extends State<AddTimeline> {
|
||||||
TextEditingController dateController = TextEditingController();
|
TextEditingController dateController = TextEditingController();
|
||||||
TextEditingController dateController2 = TextEditingController();
|
TextEditingController dateController2 = TextEditingController();
|
||||||
|
TextEditingController clubNameController = TextEditingController();
|
||||||
|
TextEditingController rollnameController = TextEditingController();
|
||||||
|
TextEditingController teamnameController = TextEditingController();
|
||||||
|
|
||||||
final List<String> _dropdownProductItems = [
|
int id = Get.arguments["id"];
|
||||||
'Individual',
|
bool edited = Get.arguments["edit"];
|
||||||
'Business',
|
|
||||||
];
|
|
||||||
|
|
||||||
String _selectedAccountType = '';
|
RxBool isChecked = false.obs;
|
||||||
|
|
||||||
void _onItemSelected(String value) {
|
timelineabilist.TimelineAbilityListModel? abilityModel;
|
||||||
|
List<timelineabilist.Data> timeline = [];
|
||||||
|
List<String> _abilitydrop = [];
|
||||||
|
|
||||||
|
Future<void> fetchABilitylist() async {
|
||||||
|
TimelineAbilityListApi abilityLsitAPI = TimelineAbilityListApi();
|
||||||
|
ResponseData<dynamic> response = await abilityLsitAPI.getAbilitylistApi();
|
||||||
|
|
||||||
|
if (response.status == ResponseStatus.SUCCESS) {
|
||||||
|
abilityModel =
|
||||||
|
timelineabilist.TimelineAbilityListModel.fromJson(response.data!);
|
||||||
setState(() {
|
setState(() {
|
||||||
_selectedAccountType = value;
|
timeline = abilityModel!.data ?? []; // Store the fetched cities
|
||||||
|
_abilitydrop =
|
||||||
|
timeline.map((platform) => platform.name.toString()).toList();
|
||||||
|
});
|
||||||
|
log(timeline.toString());
|
||||||
|
} else {
|
||||||
|
print('Failed to fetch abilities');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<int> selectedabilityid = [];
|
||||||
|
|
||||||
|
void getCatIdFromName(List<String> selectedAbilities) {
|
||||||
|
selectedabilityid.clear(); // Clear existing selections
|
||||||
|
for (var name in selectedAbilities) {
|
||||||
|
for (var i = 0; i < timeline.length; i++) {
|
||||||
|
if (name == timeline[i].name) {
|
||||||
|
selectedabilityid.add(timeline[i].id!);
|
||||||
|
break; // Assuming each name is unique, we break after finding a match
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// late Future myfuture;
|
||||||
|
FutureGroup futureGroup = FutureGroup();
|
||||||
|
RxBool isloading = true.obs;
|
||||||
|
List<String> seelctedNameList = [];
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
// TODO: implement initState
|
||||||
|
|
||||||
|
if (edited == true) {
|
||||||
|
// futureGroup.add(
|
||||||
|
Profilegetmethod().getEditTimeline(id).then((value) {
|
||||||
|
clubNameController.text =
|
||||||
|
edittimelineobj!.data!.timelineData!.clubName ?? "";
|
||||||
|
rollnameController.text =
|
||||||
|
edittimelineobj!.data!.timelineData!.roleName ?? "";
|
||||||
|
teamnameController.text =
|
||||||
|
edittimelineobj!.data!.timelineData!.teamName ?? "";
|
||||||
|
"";
|
||||||
|
dateController.text =
|
||||||
|
edittimelineobj!.data!.timelineData!.startDate ?? "";
|
||||||
|
dateController2.text =
|
||||||
|
edittimelineobj!.data!.timelineData!.endDate ?? "";
|
||||||
|
|
||||||
|
log(_abilityMap.length.toString());
|
||||||
|
// futureGroup.add(
|
||||||
|
fetchABilitylist().then((value) {
|
||||||
|
String abilitiesXids =
|
||||||
|
edittimelineobj!.data!.timelineData!.abilitiesXids ?? "";
|
||||||
|
abilitiesIds = abilitiesXids
|
||||||
|
.split(',')
|
||||||
|
.map((e) => int.tryParse(e.trim()) ?? 0) // Trim spaces around IDs
|
||||||
|
.toList();
|
||||||
|
selectedabilityid = abilitiesIds;
|
||||||
|
|
||||||
|
print(selectedabilityid.toList());
|
||||||
|
|
||||||
|
for (int i = 0; i < _abilitydrop.length; i++) {
|
||||||
|
_abilityMap.add({
|
||||||
|
"id": i + 1,
|
||||||
|
"name": _abilitydrop[i],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
getSelectedNames(selectedabilityid).then((value) {
|
||||||
|
seelctedNameList = value;
|
||||||
|
isloading = false.obs;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// );
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
fetchABilitylist().then((value) {
|
||||||
|
isloading = false.obs;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
RxBool isChecked = false.obs;
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<int> abilitiesIds = [];
|
||||||
|
|
||||||
|
UploadData() async {
|
||||||
|
// SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||||
|
utils.loader();
|
||||||
|
String abilitiesIds = selectedabilityid.join(',');
|
||||||
|
print(abilitiesIds);
|
||||||
|
Map<String, dynamic> updata = {
|
||||||
|
"club_name": clubNameController.text,
|
||||||
|
"role_name": rollnameController.text,
|
||||||
|
"team_name": teamnameController.text,
|
||||||
|
"start_date": dateController.text,
|
||||||
|
"end_date": dateController2.text,
|
||||||
|
"abilities_xids": abilitiesIds,
|
||||||
|
};
|
||||||
|
final data = await Profilepostmethod().postTimeline(updata);
|
||||||
|
if (data.status == ResponseStatus.SUCCESS) {
|
||||||
|
Get.back();
|
||||||
|
// Get.back();
|
||||||
|
// await EditProfileApi().getEditProfileIndividual().then((value) {
|
||||||
|
// Get.back();
|
||||||
|
// });
|
||||||
|
Get.toNamed(RouteName.mainscreen, arguments: 4);
|
||||||
|
|
||||||
|
print("timeline done");
|
||||||
|
return utils.showToast(data.message);
|
||||||
|
} else {
|
||||||
|
Get.back();
|
||||||
|
print("timeline not done");
|
||||||
|
return utils.showToast(data.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EdituploadData() async {
|
||||||
|
utils.loader();
|
||||||
|
String abilitiesIds = selectedabilityid.join(',');
|
||||||
|
print(abilitiesIds);
|
||||||
|
Map<String, dynamic> updata = {
|
||||||
|
"club_name": clubNameController.text,
|
||||||
|
"role_name": rollnameController.text,
|
||||||
|
"team_name": teamnameController.text,
|
||||||
|
"start_date": dateController.text,
|
||||||
|
"end_date": dateController2.text,
|
||||||
|
"abilities_xids": abilitiesIds,
|
||||||
|
"timeline_id": id,
|
||||||
|
};
|
||||||
|
final data = await Profilepostmethod().postEditTimeline(updata);
|
||||||
|
if (data.status == ResponseStatus.SUCCESS) {
|
||||||
|
Get.back();
|
||||||
|
print("timeline done");
|
||||||
|
// await EditProfileApi().getEditProfileIndividual().then((value) {
|
||||||
|
// Get.back();
|
||||||
|
// });
|
||||||
|
|
||||||
|
// utils.showToast(data.message);
|
||||||
|
// await Future.delayed(
|
||||||
|
// Duration(milliseconds: 500)); // Add a small delay if needed
|
||||||
|
// Get.toNamed(RouteName.mainscreen, arguments: 4);
|
||||||
|
Get.toNamed(RouteName.mainscreen, arguments: 4);
|
||||||
|
} else {
|
||||||
|
Get.back();
|
||||||
|
print("timeline not done");
|
||||||
|
return utils.showToast(data.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List<Map<String, dynamic>> _abilityMap = [];
|
||||||
|
List<Map<String, dynamic>> _abilityMap = [];
|
||||||
|
List<String> listData = [];
|
||||||
|
|
||||||
|
// Function to get names from selected IDs
|
||||||
|
Future<List<String>> getSelectedNames(List<int> selectedIds) async {
|
||||||
|
List<String> selectedNames = [];
|
||||||
|
for (int id in selectedIds) {
|
||||||
|
for (Map<String, dynamic> ability in _abilityMap) {
|
||||||
|
if (ability["id"] == id) {
|
||||||
|
selectedNames.add(ability["name"]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_abilitydrop =
|
||||||
|
_abilityMap.map((ability) => ability["name"] as String).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return selectedNames;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return GestureDetector(
|
||||||
resizeToAvoidBottomInset: false,
|
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
|
||||||
|
child: Scaffold(
|
||||||
|
// resizeToAvoidBottomInset: false,
|
||||||
// key: _scaffoldKey1,
|
// key: _scaffoldKey1,
|
||||||
backgroundColor: Color(0xFF222935),
|
backgroundColor: Color(0xFF222935),
|
||||||
extendBody: true,
|
extendBody: true,
|
||||||
appBar: CommonAppbar(
|
appBar: CommonAppbar(
|
||||||
titleTxt: "Add timeline",
|
titleTxt: "Add timeline",
|
||||||
),
|
),
|
||||||
body: Stack(children: [
|
body: Obx(()
|
||||||
|
// {
|
||||||
|
=>
|
||||||
|
isloading.value
|
||||||
|
? Center(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
CircularProgressIndicator(),
|
||||||
|
],
|
||||||
|
))
|
||||||
|
: edited == true
|
||||||
|
? Stack(children: [
|
||||||
Container(
|
Container(
|
||||||
decoration: const BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
image: DecorationImage(
|
image: DecorationImage(
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
image: AssetImage(
|
||||||
|
"assets/images/png/Ellipse 1496.png"),
|
||||||
fit: BoxFit.fill)),
|
fit: BoxFit.fill)),
|
||||||
),
|
),
|
||||||
SingleChildScrollView(
|
ListView(physics: ScrollPhysics(), children: [
|
||||||
child: Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
padding:
|
||||||
child:
|
EdgeInsets.symmetric(horizontal: 16.w),
|
||||||
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
sizedBoxHeight(20.h),
|
sizedBoxHeight(20.h),
|
||||||
text16400white("Club name"),
|
text16400white("Club name"),
|
||||||
sizedBoxHeight(15.h),
|
sizedBoxHeight(15.h),
|
||||||
CustomTextFormField(),
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
clubNameController,
|
||||||
|
texttype: TextInputType.text,
|
||||||
|
hintText: 'Enter club name',
|
||||||
|
validator: (value) {
|
||||||
|
if (value!.isEmpty) {
|
||||||
|
return 'Enter your club name ';
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
inputFormatters: [
|
||||||
|
// LengthLimitingTextInputFormatter(20),
|
||||||
|
RemoveEmojiInputFormatter(),
|
||||||
|
FilteringTextInputFormatter.allow(
|
||||||
|
RegExp('[a-zA-Z ]'))
|
||||||
|
],
|
||||||
|
),
|
||||||
sizedBoxHeight(25.h),
|
sizedBoxHeight(25.h),
|
||||||
text16400white("Role in the club"),
|
text16400white("Role in "),
|
||||||
sizedBoxHeight(15.h),
|
sizedBoxHeight(15.h),
|
||||||
CustomTextFormField(),
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
rollnameController,
|
||||||
|
texttype: TextInputType.text,
|
||||||
|
hintText: 'Enter role in the club',
|
||||||
|
validator: (value) {
|
||||||
|
if (value!.isEmpty) {
|
||||||
|
return 'Enter role in the club';
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
inputFormatters: [
|
||||||
|
// LengthLimitingTextInputFormatter(20),
|
||||||
|
RemoveEmojiInputFormatter(),
|
||||||
|
FilteringTextInputFormatter.allow(
|
||||||
|
RegExp('[a-zA-Z ]'))
|
||||||
|
],
|
||||||
|
),
|
||||||
sizedBoxHeight(25.h),
|
sizedBoxHeight(25.h),
|
||||||
text16400white("Team name"),
|
text16400white("Team name"),
|
||||||
sizedBoxHeight(15.h),
|
sizedBoxHeight(15.h),
|
||||||
CustomTextFormField(),
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
teamnameController,
|
||||||
|
texttype: TextInputType.text,
|
||||||
|
hintText: 'Enter team name',
|
||||||
|
validator: (value) {
|
||||||
|
if (value!.isEmpty) {
|
||||||
|
return 'Enter your team name ';
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
inputFormatters: [
|
||||||
|
// LengthLimitingTextInputFormatter(20),
|
||||||
|
RemoveEmojiInputFormatter(),
|
||||||
|
FilteringTextInputFormatter.allow(
|
||||||
|
RegExp('[a-zA-ZS0-9 ]')),
|
||||||
|
],
|
||||||
|
),
|
||||||
sizedBoxHeight(25.h),
|
sizedBoxHeight(25.h),
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment:
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
MainAxisAlignment.spaceBetween,
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
text16400white("Start date "),
|
text16400white("Start date "),
|
||||||
sizedBoxHeight(10.h),
|
sizedBoxHeight(10.h),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () => datePicker(context, dateController),
|
onTap: () => datePicker(
|
||||||
|
context,
|
||||||
|
dateController),
|
||||||
child: AbsorbPointer(
|
child: AbsorbPointer(
|
||||||
child: CustomTextFormField(
|
child:
|
||||||
textEditingController: dateController,
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
dateController,
|
||||||
leadingIcon: Container(
|
leadingIcon: Container(
|
||||||
height: 20.h,
|
height: 20.h,
|
||||||
width: 20.w,
|
width: 20.w,
|
||||||
@@ -107,15 +370,20 @@ class _AddTimelineState extends State<AddTimeline> {
|
|||||||
sizedBoxWidth(10.h),
|
sizedBoxWidth(10.h),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
text16400white("End date"),
|
text16400white("End date"),
|
||||||
sizedBoxHeight(10.h),
|
sizedBoxHeight(10.h),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () => datePicker(context, dateController2),
|
onTap: () => datePicker(
|
||||||
|
context,
|
||||||
|
dateController2),
|
||||||
child: AbsorbPointer(
|
child: AbsorbPointer(
|
||||||
child: CustomTextFormField(
|
child:
|
||||||
textEditingController: dateController2,
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
dateController2,
|
||||||
leadingIcon: Container(
|
leadingIcon: Container(
|
||||||
height: 20.h,
|
height: 20.h,
|
||||||
width: 20.w,
|
width: 20.w,
|
||||||
@@ -134,22 +402,45 @@ class _AddTimelineState extends State<AddTimeline> {
|
|||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Obx(() {
|
Obx(() {
|
||||||
return commonGlassContainer(
|
return commonGlassUI(
|
||||||
border: 1,
|
borderwidth: 1,
|
||||||
borderradius: 2,
|
borderRadius: BorderRadius.circular(2),
|
||||||
height: 20.h,
|
height: 20.h,
|
||||||
width: 20.w,
|
width: 20.w,
|
||||||
opacity1: 0.24,
|
opacity1: 0.24,
|
||||||
opacity2: 0.24,
|
opacity2: 0.24,
|
||||||
customWidget: Transform.scale(
|
customWidget:
|
||||||
|
Transform.scale(
|
||||||
scale: 1.2,
|
scale: 1.2,
|
||||||
child: Checkbox(
|
child: Checkbox(
|
||||||
side: BorderSide(color: Color(0xFF434A53)),
|
side: BorderSide(
|
||||||
value: isChecked.value,
|
color: Color(
|
||||||
activeColor: Colors.transparent,
|
0xFF434A53)),
|
||||||
checkColor: Colors.white,
|
value: isChecked
|
||||||
onChanged: ((value) {
|
.value,
|
||||||
isChecked.value = value!;
|
activeColor: Colors
|
||||||
|
.transparent,
|
||||||
|
checkColor:
|
||||||
|
Colors.white,
|
||||||
|
onChanged:
|
||||||
|
((value) {
|
||||||
|
// isChecked.value = value!;
|
||||||
|
isChecked
|
||||||
|
.value =
|
||||||
|
value!;
|
||||||
|
if (isChecked
|
||||||
|
.value) {
|
||||||
|
// Set end date to today's date
|
||||||
|
dateController2
|
||||||
|
.text = DateFormat(
|
||||||
|
'yyyy-MM-dd')
|
||||||
|
.format(DateTime
|
||||||
|
.now());
|
||||||
|
} else {
|
||||||
|
// Clear end date when checkbox is unchecked
|
||||||
|
dateController2
|
||||||
|
.clear();
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -166,23 +457,521 @@ class _AddTimelineState extends State<AddTimeline> {
|
|||||||
),
|
),
|
||||||
text16400white("Ability"),
|
text16400white("Ability"),
|
||||||
sizedBoxHeight(15.h),
|
sizedBoxHeight(15.h),
|
||||||
CustomDropDownWidgetSignup(
|
// CustomDropDownCheckBoxTimeline(
|
||||||
|
// header: 'Select ability',
|
||||||
|
// title: '',
|
||||||
|
// listData: _abilitydrop,
|
||||||
|
// onItemSelected: getCatIdFromName,
|
||||||
|
// initiallySelected: abilitiesIds
|
||||||
|
// .map((id) => id.toString())
|
||||||
|
// .toList(),
|
||||||
|
// ),
|
||||||
|
CustomDropDownCheckBoxTimeline(
|
||||||
header: 'Select ability',
|
header: 'Select ability',
|
||||||
title: '',
|
title: '',
|
||||||
listData: _dropdownProductItems,
|
listData: _abilitydrop,
|
||||||
onItemSelected: _onItemSelected,
|
// _abilityMap.map((ability) => ability["name"]).toList(),
|
||||||
// leadingImage:
|
onItemSelected: getCatIdFromName,
|
||||||
// Image.asset(
|
// (selectedNames) {
|
||||||
// 'assets/images/png/user.png',
|
// // Convert selected names back to IDs if needed
|
||||||
// ),
|
// List<int> selectedIds = [];
|
||||||
|
// for (String name in selectedNames) {
|
||||||
|
// for (Map<String, dynamic> ability
|
||||||
|
// in _abilityMap) {
|
||||||
|
// if (ability["name"] == name) {
|
||||||
|
// selectedIds.add(ability["id"]);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// // Use selectedIds as needed
|
||||||
|
// print(selectedIds);
|
||||||
|
// },
|
||||||
|
initiallySelected:
|
||||||
|
seelctedNameList, // Pass initially selected names
|
||||||
),
|
),
|
||||||
sizedBoxHeight(80.h),
|
sizedBoxHeight(80.h),
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 20.w),
|
padding: EdgeInsets.symmetric(
|
||||||
child: CommonBtn(text: "Add timeline"),
|
horizontal: 20.w),
|
||||||
|
child: CustomButton(
|
||||||
|
text: "Add timeline",
|
||||||
|
onPressed: () {
|
||||||
|
if (clubNameController.text.isBlank! ||
|
||||||
|
rollnameController
|
||||||
|
.text.isBlank! ||
|
||||||
|
teamnameController
|
||||||
|
.text.isBlank! ||
|
||||||
|
dateController
|
||||||
|
.text.isBlank! ||
|
||||||
|
dateController2
|
||||||
|
.text.isBlank! ||
|
||||||
|
selectedabilityid.isEmpty) {
|
||||||
|
utils.showToast(
|
||||||
|
'Please fill all fields');
|
||||||
|
} else {
|
||||||
|
print(selectedabilityid
|
||||||
|
.toString());
|
||||||
|
|
||||||
|
EdituploadData();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
))
|
)
|
||||||
]));
|
])
|
||||||
|
])
|
||||||
|
: Stack(children: [
|
||||||
|
Container(
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
image: DecorationImage(
|
||||||
|
image: AssetImage(
|
||||||
|
"assets/images/png/Ellipse 1496.png"),
|
||||||
|
fit: BoxFit.fill)),
|
||||||
|
),
|
||||||
|
ListView(physics: ScrollPhysics(), children: [
|
||||||
|
Padding(
|
||||||
|
padding:
|
||||||
|
EdgeInsets.symmetric(horizontal: 16.w),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
sizedBoxHeight(20.h),
|
||||||
|
text16400white("Club name"),
|
||||||
|
sizedBoxHeight(15.h),
|
||||||
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
clubNameController,
|
||||||
|
texttype: TextInputType.text,
|
||||||
|
hintText: 'Enter club name',
|
||||||
|
validator: (value) {
|
||||||
|
if (value!.isEmpty) {
|
||||||
|
return 'Enter your full name ';
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
inputFormatters: [
|
||||||
|
// LengthLimitingTextInputFormatter(20),
|
||||||
|
RemoveEmojiInputFormatter(),
|
||||||
|
FilteringTextInputFormatter.allow(
|
||||||
|
RegExp('[a-zA-Z ]'))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
sizedBoxHeight(25.h),
|
||||||
|
text16400white("Role in the club"),
|
||||||
|
sizedBoxHeight(15.h),
|
||||||
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
rollnameController,
|
||||||
|
texttype: TextInputType.text,
|
||||||
|
hintText: 'Enter role in the club',
|
||||||
|
validator: (value) {
|
||||||
|
if (value!.isEmpty) {
|
||||||
|
return 'Enter role in the club';
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
inputFormatters: [
|
||||||
|
// LengthLimitingTextInputFormatter(20),
|
||||||
|
RemoveEmojiInputFormatter(),
|
||||||
|
FilteringTextInputFormatter.allow(
|
||||||
|
RegExp('[a-zA-Z ]'))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
sizedBoxHeight(25.h),
|
||||||
|
text16400white("Team name"),
|
||||||
|
sizedBoxHeight(15.h),
|
||||||
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
teamnameController,
|
||||||
|
texttype: TextInputType.text,
|
||||||
|
hintText: 'Enter team name',
|
||||||
|
validator: (value) {
|
||||||
|
if (value!.isEmpty) {
|
||||||
|
return 'Enter your team name ';
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
inputFormatters: [
|
||||||
|
// LengthLimitingTextInputFormatter(20),
|
||||||
|
RemoveEmojiInputFormatter(),
|
||||||
|
FilteringTextInputFormatter.allow(
|
||||||
|
RegExp('[a-zA-ZS0-9 ]')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
sizedBoxHeight(25.h),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.spaceBetween,
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
text16400white("Start date "),
|
||||||
|
sizedBoxHeight(10.h),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () => datePicker(
|
||||||
|
context,
|
||||||
|
dateController),
|
||||||
|
child: AbsorbPointer(
|
||||||
|
child:
|
||||||
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
dateController,
|
||||||
|
leadingIcon: Container(
|
||||||
|
height: 20.h,
|
||||||
|
width: 20.w,
|
||||||
|
child: Center(
|
||||||
|
child: Image.asset(
|
||||||
|
"assets/images/png/calender.png",
|
||||||
|
height: 20.h,
|
||||||
|
width: 20.w,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxWidth(10.h),
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
text16400white("End date"),
|
||||||
|
sizedBoxHeight(10.h),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () => datePicker(
|
||||||
|
context,
|
||||||
|
dateController2),
|
||||||
|
child: AbsorbPointer(
|
||||||
|
child:
|
||||||
|
CustomTextFormField(
|
||||||
|
textEditingController:
|
||||||
|
dateController2,
|
||||||
|
leadingIcon: Container(
|
||||||
|
height: 20.h,
|
||||||
|
width: 20.w,
|
||||||
|
child: Center(
|
||||||
|
child: Image.asset(
|
||||||
|
"assets/images/png/calender.png",
|
||||||
|
height: 20.h,
|
||||||
|
width: 20.w,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
sizedBoxHeight(10.h),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Obx(() {
|
||||||
|
return commonGlassUI(
|
||||||
|
borderwidth: 1,
|
||||||
|
borderRadius: BorderRadius.circular( 2),
|
||||||
|
height: 20.h,
|
||||||
|
width: 20.w,
|
||||||
|
opacity1: 0.24,
|
||||||
|
opacity2: 0.24,
|
||||||
|
customWidget:
|
||||||
|
Transform.scale(
|
||||||
|
scale: 1.2,
|
||||||
|
child: Checkbox(
|
||||||
|
side: BorderSide(
|
||||||
|
color: Color(
|
||||||
|
0xFF434A53)),
|
||||||
|
value: isChecked
|
||||||
|
.value,
|
||||||
|
activeColor: Colors
|
||||||
|
.transparent,
|
||||||
|
checkColor:
|
||||||
|
Colors.white,
|
||||||
|
onChanged:
|
||||||
|
((value) {
|
||||||
|
// isChecked.value = value!;
|
||||||
|
isChecked
|
||||||
|
.value =
|
||||||
|
value!;
|
||||||
|
if (isChecked
|
||||||
|
.value) {
|
||||||
|
// Set end date to today's date
|
||||||
|
dateController2
|
||||||
|
.text = DateFormat(
|
||||||
|
'yyyy-MM-dd')
|
||||||
|
.format(DateTime
|
||||||
|
.now());
|
||||||
|
} else {
|
||||||
|
// Clear end date when checkbox is unchecked
|
||||||
|
dateController2
|
||||||
|
.clear();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
sizedBoxWidth(8.w),
|
||||||
|
text10400white("Present")
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
text16400white("Ability"),
|
||||||
|
sizedBoxHeight(15.h),
|
||||||
|
CustomDropDownChexkBox(
|
||||||
|
header: 'Select ability',
|
||||||
|
title: '',
|
||||||
|
listData: _abilitydrop,
|
||||||
|
onItemSelected: getCatIdFromName,
|
||||||
|
initiallySelected: [], // or pass initial values if needed
|
||||||
|
),
|
||||||
|
sizedBoxHeight(80.h),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.symmetric(
|
||||||
|
horizontal: 20.w),
|
||||||
|
child: CustomButton(
|
||||||
|
text: "Add timeline",
|
||||||
|
onPressed: () {
|
||||||
|
if (clubNameController.text.isBlank! ||
|
||||||
|
rollnameController
|
||||||
|
.text.isBlank! ||
|
||||||
|
teamnameController
|
||||||
|
.text.isBlank! ||
|
||||||
|
dateController
|
||||||
|
.text.isBlank! ||
|
||||||
|
dateController2
|
||||||
|
.text.isBlank! ||
|
||||||
|
selectedabilityid.isEmpty) {
|
||||||
|
utils.showToast(
|
||||||
|
'Please fill all fields');
|
||||||
|
} else {
|
||||||
|
print(selectedabilityid
|
||||||
|
.toString());
|
||||||
|
|
||||||
|
UploadData();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
)
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
// }
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CustomDropDownCheckBoxTimeline extends StatefulWidget {
|
||||||
|
const CustomDropDownCheckBoxTimeline({
|
||||||
|
Key? key,
|
||||||
|
required this.header,
|
||||||
|
required this.title,
|
||||||
|
required this.listData,
|
||||||
|
required this.onItemSelected,
|
||||||
|
this.leadingImage,
|
||||||
|
this.showOtherOption = false,
|
||||||
|
required this.initiallySelected,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
final String header;
|
||||||
|
final String title;
|
||||||
|
final List<String> listData;
|
||||||
|
final Function(List<String>) onItemSelected;
|
||||||
|
final Widget? leadingImage;
|
||||||
|
final bool showOtherOption;
|
||||||
|
final List<String> initiallySelected;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<CustomDropDownCheckBoxTimeline> createState() =>
|
||||||
|
_CustomDropDownCheckBoxTimelineState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _CustomDropDownCheckBoxTimelineState
|
||||||
|
extends State<CustomDropDownCheckBoxTimeline> {
|
||||||
|
RxBool onDropTap = false.obs;
|
||||||
|
RxList<String> selectedValues = <String>[].obs;
|
||||||
|
final TextEditingController _textController = TextEditingController();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
selectedValues
|
||||||
|
.addAll(widget.initiallySelected); // Initialize selectedValues
|
||||||
|
}
|
||||||
|
|
||||||
|
List<DropdownMenuItem<String>> _buildDropdownMenuItems() {
|
||||||
|
return widget.listData.asMap().entries.map((entry) {
|
||||||
|
int index = entry.key;
|
||||||
|
String item = entry.value;
|
||||||
|
return DropdownMenuItem<String>(
|
||||||
|
value: item,
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () {
|
||||||
|
setState(() {
|
||||||
|
if (selectedValues.contains(item)) {
|
||||||
|
selectedValues.remove(item);
|
||||||
|
} else {
|
||||||
|
selectedValues.add(item);
|
||||||
|
}
|
||||||
|
_textController.clear();
|
||||||
|
widget.onItemSelected(selectedValues.toList());
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Obx(() {
|
||||||
|
return Checkbox(
|
||||||
|
value: selectedValues.contains(item),
|
||||||
|
activeColor: Colors.white,
|
||||||
|
checkColor: const Color(0xFFD90B2E),
|
||||||
|
onChanged: (bool? value) {
|
||||||
|
setState(() {
|
||||||
|
if (value == true) {
|
||||||
|
selectedValues.add(item);
|
||||||
|
} else {
|
||||||
|
selectedValues.remove(item);
|
||||||
|
}
|
||||||
|
_textController.clear();
|
||||||
|
widget.onItemSelected(selectedValues.toList());
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
Expanded(
|
||||||
|
child: Text(
|
||||||
|
item,
|
||||||
|
style: const TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 16,
|
||||||
|
fontFamily: 'Helvetica',
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
maxLines: 1, // Adjust as needed
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
if (index != widget.listData.length - 1)
|
||||||
|
const Divider(thickness: 1, color: Color(0xFF434A53)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Obx(
|
||||||
|
() => Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
onDropTap.value = !onDropTap.value;
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
width: double.infinity,
|
||||||
|
// height: 50,
|
||||||
|
padding:
|
||||||
|
EdgeInsets.only(right: 22, left: 12, top: 15, bottom: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: const Color(0xFFFFFFFF).withOpacity(0.10),
|
||||||
|
borderRadius: onDropTap.value
|
||||||
|
? const BorderRadius.vertical(
|
||||||
|
top: Radius.circular(30),
|
||||||
|
)
|
||||||
|
: const BorderRadius.all(Radius.circular(30)),
|
||||||
|
gradient: LinearGradient(
|
||||||
|
begin: Alignment.topLeft,
|
||||||
|
end: Alignment.bottomRight,
|
||||||
|
colors: [
|
||||||
|
const Color(0xFFffffff).withOpacity(0.50),
|
||||||
|
const Color(0xFFFFFFFF).withOpacity(0.50),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
border: Border.all(color: const Color(0xFF434A53)),
|
||||||
|
),
|
||||||
|
child: Center(
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
widget.leadingImage == null
|
||||||
|
? SizedBox()
|
||||||
|
: widget.leadingImage!,
|
||||||
|
const SizedBox(width: 12),
|
||||||
|
Expanded(
|
||||||
|
child: Text(
|
||||||
|
selectedValues.isEmpty
|
||||||
|
? widget.header
|
||||||
|
: selectedValues.join(', '),
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 16,
|
||||||
|
fontFamily: 'Helvetica',
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
),
|
||||||
|
// overflow: TextOverflow.ellipsis,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// const Spacer(),
|
||||||
|
onDropTap.value
|
||||||
|
? Image.asset('assets/images/png/arrowup.png')
|
||||||
|
: Image.asset('assets/images/png/arrowdown.png'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (onDropTap.value)
|
||||||
|
Scrollbar(
|
||||||
|
child: Container(
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: const Color(0xFFFFFFFF).withOpacity(0.10),
|
||||||
|
borderRadius: const BorderRadius.vertical(
|
||||||
|
bottom: Radius.circular(30),
|
||||||
|
),
|
||||||
|
border: Border.all(color: const Color(0xFF434A53)),
|
||||||
|
gradient: LinearGradient(
|
||||||
|
begin: Alignment.topLeft,
|
||||||
|
end: Alignment.bottomRight,
|
||||||
|
colors: [
|
||||||
|
const Color(0xFFffffff).withOpacity(0.50),
|
||||||
|
const Color(0xFFFFFFFF).withOpacity(0.50),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
children: _buildDropdownMenuItems(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,84 +0,0 @@
|
|||||||
import 'package:regroup/Common/api_urls.dart';
|
|
||||||
import 'package:regroup/Common/base_manager.dart';
|
|
||||||
import 'package:regroup/Common/controller/data/network/network_api.dart';
|
|
||||||
|
|
||||||
class Profilepostmethod {
|
|
||||||
Profilepostmethod();
|
|
||||||
|
|
||||||
Future<ResponseData<dynamic>> postContactus(updata) async {
|
|
||||||
print("updata is $updata");
|
|
||||||
final response = await NetworkApiServices().postApi(
|
|
||||||
updata,
|
|
||||||
ApiUrls.postcontactus,
|
|
||||||
);
|
|
||||||
print("response is ${response.data}");
|
|
||||||
print("response message is ${response.message}");
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<ResponseData<dynamic>> postReportandbug(updata) async {
|
|
||||||
print("updata is $updata");
|
|
||||||
final response = await NetworkApiServices().postApi(
|
|
||||||
updata,
|
|
||||||
ApiUrls.postreportbug,
|
|
||||||
);
|
|
||||||
print("response is ${response.data}");
|
|
||||||
print("response message is ${response.message}");
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<ResponseData<dynamic>> postBlockuser(updata) async {
|
|
||||||
print("updata is $updata");
|
|
||||||
final response = await NetworkApiServices().postApi(
|
|
||||||
updata,
|
|
||||||
ApiUrls.postblock,
|
|
||||||
);
|
|
||||||
print("response is ${response.data}");
|
|
||||||
print("response message is ${response.message}");
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<ResponseData<dynamic>> postunfollowuser(updata) async {
|
|
||||||
print("updata is $updata");
|
|
||||||
final response = await NetworkApiServices().postApi(
|
|
||||||
updata,
|
|
||||||
ApiUrls.postunfollow,
|
|
||||||
);
|
|
||||||
print("response is ${response.data}");
|
|
||||||
print("response message is ${response.message}");
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<ResponseData<dynamic>> postRemoveuser(updata) async {
|
|
||||||
print("updata is $updata");
|
|
||||||
final response = await NetworkApiServices().postApi(
|
|
||||||
updata,
|
|
||||||
ApiUrls.postremoveuser,
|
|
||||||
);
|
|
||||||
print("response is ${response.data}");
|
|
||||||
print("response message is ${response.message}");
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<ResponseData<dynamic>> postChangepassword(updata) async {
|
|
||||||
print("updata is $updata");
|
|
||||||
final response = await NetworkApiServices().postApi(
|
|
||||||
updata,
|
|
||||||
ApiUrls.postchangepassword,
|
|
||||||
);
|
|
||||||
print("response is ${response.data}");
|
|
||||||
print("response message is ${response.message}");
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<ResponseData<dynamic>> postChangepassverifyotp(updata) async {
|
|
||||||
print("updata is $updata");
|
|
||||||
final response = await NetworkApiServices().postApi(
|
|
||||||
updata,
|
|
||||||
ApiUrls.postchangepassverify,
|
|
||||||
);
|
|
||||||
print("response is ${response.data}");
|
|
||||||
print("response message is ${response.message}");
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:regroup/resources/routes/route_name.dart';
|
|
||||||
|
|
||||||
class CommunitySetting extends StatefulWidget {
|
|
||||||
const CommunitySetting({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<CommunitySetting> createState() => _CommunitySettingState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _CommunitySettingState extends State<CommunitySetting> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Community settings",
|
|
||||||
),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
), Column(children: [
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.editcommunity);
|
|
||||||
},
|
|
||||||
child: rowTile(text: 'Edit community info')),
|
|
||||||
commonDivider(),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.managemembers);
|
|
||||||
},
|
|
||||||
child: rowTile(text: 'Manage members')),
|
|
||||||
commonDivider(),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.managegroups);
|
|
||||||
},
|
|
||||||
child: rowTile(text: 'Manage groups')),
|
|
||||||
commonDivider(),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Get.toNamed(RouteName.managetags);
|
|
||||||
},
|
|
||||||
child: rowTile(text: 'Manage tags')),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
])
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget rowTile({
|
|
||||||
required String text,
|
|
||||||
}) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h),
|
|
||||||
child: Row(children: [
|
|
||||||
text18w400_FCFCFC(text),
|
|
||||||
Spacer(),
|
|
||||||
Icon(
|
|
||||||
Icons.arrow_forward_ios,
|
|
||||||
color: Colors.white,
|
|
||||||
size: 20,
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,307 +0,0 @@
|
|||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:dotted_border/dotted_border.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:regroup/Common/CommonDropDown.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonDropdown.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomNextButton.dart';
|
|
||||||
import 'package:regroup/Utils/Common/ImageUpload.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
|
|
||||||
class EditCommunity extends StatefulWidget {
|
|
||||||
const EditCommunity({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<EditCommunity> createState() => _EditCommunityState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _EditCommunityState extends State<EditCommunity> {
|
|
||||||
TextEditingController communitynameController = TextEditingController();
|
|
||||||
TextEditingController descriptionController = TextEditingController();
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
communitynameController.text = 'Active alliance network';
|
|
||||||
descriptionController.text =
|
|
||||||
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer .";
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<File?> filePath = [];
|
|
||||||
List<File?> bannerPath = [];
|
|
||||||
bool isImageAdded = false;
|
|
||||||
bool isbannerAdded = false;
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Edit community info",
|
|
||||||
),
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
),
|
|
||||||
SingleChildScrollView(
|
|
||||||
child: Column(children: [
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
Stack(
|
|
||||||
clipBehavior: Clip.none,
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
height: 100.h,
|
|
||||||
width: 100.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
border:
|
|
||||||
Border.all(color: Color(0xFF434A53), width: 0.5.w),
|
|
||||||
),
|
|
||||||
child: Center(
|
|
||||||
child: filePath.isNotEmpty
|
|
||||||
? ClipOval(
|
|
||||||
child: SizedBox.fromSize(
|
|
||||||
size: Size.fromRadius(50.r),
|
|
||||||
child: Image.file(
|
|
||||||
filePath[0]!,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
width: double.infinity,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: Image.asset('assets/images/png/Ellipse 37.png',
|
|
||||||
fit: BoxFit.cover),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
right: -10,
|
|
||||||
bottom: 0,
|
|
||||||
child: InkWell(
|
|
||||||
onTap: () {
|
|
||||||
ImageUploadBottomSheet().showModal(
|
|
||||||
context,
|
|
||||||
true,
|
|
||||||
(result) {
|
|
||||||
var file = File(result);
|
|
||||||
|
|
||||||
filePath.add(file);
|
|
||||||
isImageAdded = true;
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
height: 35.h,
|
|
||||||
width: 35.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Color(0xFFD90B2E),
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
border: Border.all(
|
|
||||||
color: Color(0xFFD90B2E), width: 0.5.w)),
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
'assets/images/png/cameraicon.png',
|
|
||||||
height: 14.h,
|
|
||||||
width: 15.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
))
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text16w400_white("Edit community profile picture"),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text16w400_FCFCFC("Community banner image"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
ImageUploadBottomSheet().showModal(
|
|
||||||
context,
|
|
||||||
false,
|
|
||||||
(result) {
|
|
||||||
var file = File(result);
|
|
||||||
|
|
||||||
bannerPath.add(file);
|
|
||||||
isbannerAdded = true;
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: DottedBorder(
|
|
||||||
strokeWidth: 1,
|
|
||||||
dashPattern: [7, 4],
|
|
||||||
borderType: BorderType.RRect,
|
|
||||||
radius: Radius.circular(14.r),
|
|
||||||
color: Color(0xFF434A53),
|
|
||||||
child: commonGlassContainer(
|
|
||||||
border: 0,
|
|
||||||
width: double.infinity,
|
|
||||||
height: 150.h,
|
|
||||||
borderradius: 10.r,
|
|
||||||
customWidget: bannerPath.isNotEmpty && isbannerAdded
|
|
||||||
? Stack(children: [
|
|
||||||
Image.file(
|
|
||||||
bannerPath[0]!,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
width: double.infinity,
|
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
right: 5,
|
|
||||||
bottom: 5,
|
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
bannerPath.clear();
|
|
||||||
isbannerAdded = false;
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
width: 27,
|
|
||||||
height: 27,
|
|
||||||
decoration: ShapeDecoration(
|
|
||||||
color: Color(0xFF7E7E7E),
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.circular(5)),
|
|
||||||
),
|
|
||||||
child: Icon(
|
|
||||||
Icons.delete_outline_outlined,
|
|
||||||
color: Colors.white,
|
|
||||||
))),
|
|
||||||
),
|
|
||||||
])
|
|
||||||
: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(vertical: 16.h),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/cameraicon2.png",
|
|
||||||
height: 36.h,
|
|
||||||
width: 36.w,
|
|
||||||
),
|
|
||||||
sizedBoxHeight(10.h),
|
|
||||||
text14w400white('Upload banner image'),
|
|
||||||
sizedBoxHeight(8.h),
|
|
||||||
SizedBox(
|
|
||||||
width: 270.w,
|
|
||||||
child: text10w400_whiteCenter(
|
|
||||||
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s"),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(16.w),
|
|
||||||
commonGlassContainer(
|
|
||||||
width: double.infinity,
|
|
||||||
height: 60.h,
|
|
||||||
borderradius: 10.r,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 12.w),
|
|
||||||
child: Row(children: [
|
|
||||||
Container(
|
|
||||||
height: 40.h,
|
|
||||||
width: 40.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
borderRadius: BorderRadius.circular(5.r)),
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/img2.png",
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxWidth(8.w),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
text14400white("group1.png"),
|
|
||||||
sizedBoxHeight(2.h),
|
|
||||||
text12w400_FCFCFC_blur("10 kb")
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
'assets/images/png/cancelicon.png',
|
|
||||||
height: 20.h,
|
|
||||||
width: 20.w,
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
border: 1),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text16w400_FCFCFC("Community name"),
|
|
||||||
sizedBoxHeight(14.h),
|
|
||||||
CustomTextFormField(
|
|
||||||
textEditingController: communitynameController,
|
|
||||||
validator: (val) {
|
|
||||||
if (val == null || val.isEmpty) {
|
|
||||||
return 'Enter Community name';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text16w400_FCFCFC("Group description"),
|
|
||||||
sizedBoxHeight(14.h),
|
|
||||||
CustomTextFormField2(
|
|
||||||
maxlines: 3,
|
|
||||||
textEditingController: descriptionController,
|
|
||||||
),
|
|
||||||
text16w400_FCFCFC("Type of community"),
|
|
||||||
sizedBoxHeight(14.h),
|
|
||||||
CustomDropDownRadio(
|
|
||||||
header: "",
|
|
||||||
title: "",
|
|
||||||
listData: ["Public", "Private - Request to join"],
|
|
||||||
onItemSelected: (p0) {},
|
|
||||||
leadingImage: SizedBox()),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text16w400_FCFCFC("Location*"),
|
|
||||||
sizedBoxHeight(14.h),
|
|
||||||
CustomDropDownRadio(
|
|
||||||
header: "",
|
|
||||||
title: "",
|
|
||||||
listData: ["Public", "Private", "Secret"],
|
|
||||||
onItemSelected: (p0) {},
|
|
||||||
leadingImage: SizedBox()),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
text16w400_FCFCFC("Primary activity*"),
|
|
||||||
sizedBoxHeight(14.h),
|
|
||||||
CustomDropDownRadio(
|
|
||||||
showOtherOption: true,
|
|
||||||
header: "",
|
|
||||||
title: "",
|
|
||||||
listData: ["Sports", "Hobby"],
|
|
||||||
onItemSelected: (p0) {},
|
|
||||||
leadingImage: SizedBox()),
|
|
||||||
sizedBoxHeight(50.h),
|
|
||||||
CustomButton(text: 'Save changes', onPressed: () {}),
|
|
||||||
sizedBoxHeight(50.h),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
)
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,188 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
|
|
||||||
class ManageGroups extends StatefulWidget {
|
|
||||||
const ManageGroups({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<ManageGroups> createState() => _ManageGroupsState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _ManageGroupsState extends State<ManageGroups> {
|
|
||||||
List groupData = [
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/img45.png",
|
|
||||||
"title": "Iron titans fitness crew",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/Rectangle 25.png",
|
|
||||||
"title": "Body blitz brigade",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/img2.png",
|
|
||||||
"title": "Fit fusion squad",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/img2.png",
|
|
||||||
"title": "Power pulse posse",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"imagePath": "assets/images/png/img2.png",
|
|
||||||
"title": "Wellness warriors collective",
|
|
||||||
"subtitle": "Lorem ipsum dummy text",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Manage groups",
|
|
||||||
customActionWidget: InkWell(
|
|
||||||
onTap: () {},
|
|
||||||
child: Container(
|
|
||||||
height: 35.h,
|
|
||||||
width: 35.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Color(0xFFD90B2E),
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
boxShadow: [
|
|
||||||
BoxShadow(
|
|
||||||
color: Color(0x40000000),
|
|
||||||
offset: Offset(0, 6),
|
|
||||||
blurRadius: 8,
|
|
||||||
spreadRadius: 0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
child: Icon(Icons.add, color: Colors.white, weight: 2),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
), SingleChildScrollView(
|
|
||||||
child: Column(children: [
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
CustomTextFormField(
|
|
||||||
leadingIcon: SizedBox(
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
child: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/ion_search-outline.png",
|
|
||||||
height: 23,
|
|
||||||
width: 23,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
hintText: "Search groups",
|
|
||||||
),
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
commonGlassContainer(
|
|
||||||
opacity1: 0.24,
|
|
||||||
opacity2: 0.24,
|
|
||||||
width: 50.w,
|
|
||||||
height: 50.h,
|
|
||||||
borderradius: 100,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/Black.png",
|
|
||||||
height: 30.h,
|
|
||||||
width: 30.w,
|
|
||||||
)),
|
|
||||||
border: 0.5),
|
|
||||||
sizedBoxWidth(8.w),
|
|
||||||
text18w400_FCFCFC("Create group"),
|
|
||||||
Spacer(),
|
|
||||||
Icon(
|
|
||||||
Icons.arrow_forward_ios_outlined,
|
|
||||||
color: Colors.white,
|
|
||||||
size: 14.sp,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
text18w700white("Groups"),
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
ListView.builder(
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: groupData.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
groupWidget(
|
|
||||||
imagePath: groupData[index]["imagePath"],
|
|
||||||
title: groupData[index]["title"],
|
|
||||||
subtitle: groupData[index]["subtitle"]),
|
|
||||||
commonDivider(),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
)
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget groupWidget({
|
|
||||||
required String imagePath,
|
|
||||||
required String title,
|
|
||||||
required String subtitle,
|
|
||||||
}) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 16.w),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
CircleAvatar(
|
|
||||||
backgroundImage: AssetImage(imagePath),
|
|
||||||
radius: 20.r,
|
|
||||||
),
|
|
||||||
sizedBoxWidth(10.w),
|
|
||||||
Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
text16w400_FCFCFC(title),
|
|
||||||
sizedBoxHeight(4.h),
|
|
||||||
text12w400_FCFCFC_blur(subtitle)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Icon(
|
|
||||||
Icons.clear,
|
|
||||||
color: Color(0xFFFFFFFF),
|
|
||||||
weight: 1.88,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,233 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:glassmorphism/glassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/CommonGlassmorphism.dart';
|
|
||||||
import 'package:regroup/Common/CommonTabBar.dart';
|
|
||||||
import 'package:regroup/Common/CommonWidget.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
import 'package:regroup/resources/routes/route_name.dart';
|
|
||||||
|
|
||||||
class ManageTags extends StatefulWidget {
|
|
||||||
const ManageTags({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<ManageTags> createState() => _ManageTagsState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _ManageTagsState extends State<ManageTags> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "Manage tags",
|
|
||||||
),
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
), SingleChildScrollView(
|
|
||||||
child: Column(children: [
|
|
||||||
sizedBoxHeight(20.h),
|
|
||||||
DefaultTabController(
|
|
||||||
length: 2,
|
|
||||||
// initialIndex: selectedIndex.value,
|
|
||||||
child: Column(children: [
|
|
||||||
CommonTabBar(tabs: const [
|
|
||||||
Tab(
|
|
||||||
text: 'Tags',
|
|
||||||
),
|
|
||||||
Tab(
|
|
||||||
text: 'Tag requests',
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
SizedBox(
|
|
||||||
height: 600.h,
|
|
||||||
child: TabBarView(
|
|
||||||
children: [
|
|
||||||
tagsTab(),
|
|
||||||
tagrequestsrTab(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]))
|
|
||||||
]))
|
|
||||||
]),
|
|
||||||
floatingActionButtonLocation: CustomFloatingActionButtonLocation(60.0),
|
|
||||||
floatingActionButton: Container(
|
|
||||||
height: 55.h,
|
|
||||||
width: 55.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
boxShadow: [
|
|
||||||
BoxShadow(
|
|
||||||
color: Color(0x40000000), // Hex color with 40% opacity
|
|
||||||
offset: Offset(0, 6),
|
|
||||||
blurRadius: 8,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
child: FloatingActionButton(
|
|
||||||
onPressed: () {
|
|
||||||
Get.toNamed(RouteName.newtag);
|
|
||||||
},
|
|
||||||
backgroundColor: Color(0xFFD90B2E),
|
|
||||||
autofocus: true,
|
|
||||||
shape: CircleBorder(),
|
|
||||||
child: Image.asset(
|
|
||||||
"assets/images/png/iconamoon_edit-thin.png",
|
|
||||||
height: 30.h,
|
|
||||||
width: 30.w,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget tagsTab() {
|
|
||||||
List tags = ['Cycle', 'Sports', 'Fitness', 'Kayaking', 'Sports club'];
|
|
||||||
return Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(25.h),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: text16400white("Special Announcement Tags"),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(15.h),
|
|
||||||
ListView.builder(
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: tags.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
rowTagsTile(text: tags[index]),
|
|
||||||
if (index != tags.length - 1) commonDivider()
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget rowTagsTile({
|
|
||||||
required String text,
|
|
||||||
}) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 18.h),
|
|
||||||
child: Row(children: [
|
|
||||||
text16w400_FCFCFC(text),
|
|
||||||
Spacer(),
|
|
||||||
Image.asset(
|
|
||||||
"assets/images/png/Group 1000004071.png",
|
|
||||||
width: 5.w,
|
|
||||||
height: 22.h,
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget tagrequestsrTab() {
|
|
||||||
List tagrequest = [
|
|
||||||
'Running',
|
|
||||||
'Fit fam friday',
|
|
||||||
];
|
|
||||||
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
ListView.builder(
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: tagrequest.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
rowTagRequestTile(title: tagrequest[index]),
|
|
||||||
sizedBoxHeight(20.h)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget rowTagRequestTile({
|
|
||||||
required String title,
|
|
||||||
}) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: commonGlassContainer(
|
|
||||||
width: double.infinity,
|
|
||||||
height: 60.h,
|
|
||||||
borderradius: 10.r,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
||||||
child: Row(children: [
|
|
||||||
text16w700_FCFCFC(title),
|
|
||||||
Spacer(),
|
|
||||||
commonGlassContainer(
|
|
||||||
width: 35.w,
|
|
||||||
height: 35.h,
|
|
||||||
opacity1: 0.24,
|
|
||||||
opacity2: 0.24,
|
|
||||||
borderradius: 100,
|
|
||||||
customWidget: Center(
|
|
||||||
child: Icon(
|
|
||||||
Icons.clear,
|
|
||||||
size: 20,
|
|
||||||
color: Colors.white,
|
|
||||||
weight: 1,
|
|
||||||
)),
|
|
||||||
border: 0.5),
|
|
||||||
sizedBoxWidth(16.w),
|
|
||||||
Container(
|
|
||||||
height: 35.h,
|
|
||||||
width: 35.w,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Color(0xFFD90B2E),
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
),
|
|
||||||
child: Icon(
|
|
||||||
Icons.check,
|
|
||||||
size: 20,
|
|
||||||
color: Colors.white,
|
|
||||||
weight: 1,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
border: 1),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
class CustomFloatingActionButtonLocation extends FloatingActionButtonLocation {
|
|
||||||
final double offset;
|
|
||||||
|
|
||||||
CustomFloatingActionButtonLocation(this.offset);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Offset getOffset(ScaffoldPrelayoutGeometry scaffoldGeometry) {
|
|
||||||
// Calculate the position
|
|
||||||
double fabX = scaffoldGeometry.scaffoldSize.width -
|
|
||||||
scaffoldGeometry.floatingActionButtonSize.width -
|
|
||||||
16.0;
|
|
||||||
double fabY = scaffoldGeometry.scaffoldSize.height -
|
|
||||||
scaffoldGeometry.floatingActionButtonSize.height -
|
|
||||||
16.0 -
|
|
||||||
offset;
|
|
||||||
return Offset(fabX, fabY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomNextButton.dart';
|
|
||||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
|
||||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
|
||||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
|
||||||
import 'package:regroup/Utils/texts.dart';
|
|
||||||
|
|
||||||
class NewTag extends StatefulWidget {
|
|
||||||
const NewTag({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<NewTag> createState() => _NewTagState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _NewTagState extends State<NewTag> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
// key: _scaffoldKey1,
|
|
||||||
backgroundColor: Color(0xFF222935),
|
|
||||||
extendBody: true,
|
|
||||||
appBar: CommonAppbar(
|
|
||||||
titleTxt: "New tag",
|
|
||||||
),
|
|
||||||
resizeToAvoidBottomInset: false,
|
|
||||||
body: Stack(children: [
|
|
||||||
Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
image: DecorationImage(
|
|
||||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
|
||||||
fit: BoxFit.fill)),
|
|
||||||
), SingleChildScrollView(
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
sizedBoxHeight(30.h),
|
|
||||||
text16w400_FCFCFC("Tag name"),
|
|
||||||
sizedBoxHeight(16.h),
|
|
||||||
CustomTextFormField(
|
|
||||||
hintText: "",
|
|
||||||
validator: (val) {
|
|
||||||
if (val == null || val.isEmpty) {
|
|
||||||
return 'Enter a tag name';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
),
|
|
||||||
sizedBoxHeight(80.h),
|
|
||||||
CustomButton(text: "Add", onPressed: () {})
|
|
||||||
]),
|
|
||||||
))
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||