feat : Posts in Event Details
This commit is contained in:
@@ -8,5 +8,5 @@
|
|||||||
"top_topics_and_observing_domains": [ ]
|
"top_topics_and_observing_domains": [ ]
|
||||||
} ],
|
} ],
|
||||||
"hex_encoded_hmac_key": "416A797C6AAA772A584FBCDBCCBA7E8FC2701910461A24DAC2F72331366DFC48",
|
"hex_encoded_hmac_key": "416A797C6AAA772A584FBCDBCCBA7E8FC2701910461A24DAC2F72331366DFC48",
|
||||||
"next_scheduled_calculation_time": "13399546700922458"
|
"next_scheduled_calculation_time": "13399546700922469"
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@@ -1,3 +1,3 @@
|
|||||||
2025/07/11-09:55:25.517 108c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension Rules/MANIFEST-000001
|
2025/08/08-17:31:58.333 5788 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension Rules/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.520 108c Recovering log #3
|
2025/08/08-17:31:58.334 5788 Recovering log #3
|
||||||
2025/07/11-09:55:25.520 108c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension Rules/000003.log
|
2025/08/08-17:31:58.337 5788 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension Rules/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/07/11-09:55:25.526 108c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension Scripts/MANIFEST-000001
|
2025/08/08-17:31:58.346 9740 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension Scripts/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.527 108c Recovering log #3
|
2025/08/08-17:31:58.347 9740 Recovering log #3
|
||||||
2025/07/11-09:55:25.527 108c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension Scripts/000003.log
|
2025/08/08-17:31:58.348 9740 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension Scripts/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/08/06-10:18:01.945 8690 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Extension State/MANIFEST-000001
|
2025/08/08-17:31:58.658 8c8c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension State/MANIFEST-000001
|
||||||
2025/08/06-10:18:01.945 8690 Recovering log #3
|
2025/08/08-17:31:58.658 8c8c Recovering log #3
|
||||||
2025/08/06-10:18:01.946 8690 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Extension State/000003.log
|
2025/08/08-17:31:58.658 8c8c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension State/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/07/11-09:55:25.697 f14 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension State/MANIFEST-000001
|
2025/08/08-15:24:20.881 921c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Extension State/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.697 f14 Recovering log #3
|
2025/08/08-15:24:20.881 921c Recovering log #3
|
||||||
2025/07/11-09:55:25.698 f14 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension State/000003.log
|
2025/08/08-15:24:20.882 921c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Extension State/000003.log
|
||||||
|
|||||||
Binary file not shown.
@@ -1,3 +1,3 @@
|
|||||||
2025/08/06-10:18:20.974 3fd8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\GCM Store\Encryption/MANIFEST-000001
|
2025/08/08-15:24:34.134 25e8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\GCM Store\Encryption/MANIFEST-000001
|
||||||
2025/08/06-10:18:20.975 3fd8 Recovering log #3
|
2025/08/08-15:24:34.134 25e8 Recovering log #3
|
||||||
2025/08/06-10:18:20.975 3fd8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\GCM Store\Encryption/000003.log
|
2025/08/08-15:24:34.135 25e8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\GCM Store\Encryption/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/06/29-13:55:42.657 2224 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.dc9734fc\flutter_tools_chrome_device.d30622eb\Default\GCM Store\Encryption/MANIFEST-000001
|
2025/08/06-10:18:20.974 3fd8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\GCM Store\Encryption/MANIFEST-000001
|
||||||
2025/06/29-13:55:42.658 2224 Recovering log #3
|
2025/08/06-10:18:20.975 3fd8 Recovering log #3
|
||||||
2025/06/29-13:55:42.658 2224 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.dc9734fc\flutter_tools_chrome_device.d30622eb\Default\GCM Store\Encryption/000003.log
|
2025/08/06-10:18:20.975 3fd8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\GCM Store\Encryption/000003.log
|
||||||
|
|||||||
Binary file not shown.
@@ -1,3 +1,3 @@
|
|||||||
2025/08/06-10:18:01.843 9ec4 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Local Storage\leveldb/MANIFEST-000001
|
2025/08/08-17:31:58.376 21f8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Local Storage\leveldb/MANIFEST-000001
|
||||||
2025/08/06-10:18:01.848 9ec4 Recovering log #3
|
2025/08/08-17:31:58.392 21f8 Recovering log #3
|
||||||
2025/08/06-10:18:01.850 9ec4 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Local Storage\leveldb/000003.log
|
2025/08/08-17:31:58.395 21f8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Local Storage\leveldb/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/07/11-09:55:25.542 60f8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Local Storage\leveldb/MANIFEST-000001
|
2025/08/08-15:24:20.764 6fbc Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Local Storage\leveldb/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.546 60f8 Recovering log #3
|
2025/08/08-15:24:20.771 6fbc Recovering log #3
|
||||||
2025/07/11-09:55:25.547 60f8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Local Storage\leveldb/000003.log
|
2025/08/08-15:24:20.773 6fbc Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Local Storage\leveldb/000003.log
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"net":{"http_server_properties":{"servers":[{"anonymization":["FAAAABAAAABodHRwczovL2d2dDEuY29t",false,0],"network_stats":{"srtt":25215},"server":"https://redirector.gvt1.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401533883096701","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":42077},"server":"https://accounts.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401533904171284","port":443,"protocol_str":"quic"}],"anonymization":["MAAAACsAAABodHRwczovL29wdGltaXphdGlvbmd1aWRlLXBhLmdvb2dsZWFwaXMuY29tAA==",false,0],"network_stats":{"srtt":19582},"server":"https://optimizationguide-pa.googleapis.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401534652341440","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":26005},"server":"https://android.clients.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401533883127023","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":20144},"server":"https://www.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401533890949399","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":21512},"server":"https://fonts.gstatic.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":31754},"server":"https://www.google.com"}],"supports_quic":{"address":"192.168.1.10","used_quic":true},"version":5},"network_qualities":{"CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G"}}}
|
{"net":{"http_server_properties":{"broken_alternative_services":[{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"broken_count":2,"host":"android.clients.google.com","port":443,"protocol_str":"quic"}],"servers":[{"anonymization":["FAAAABAAAABodHRwczovL2d2dDEuY29t",false,0],"network_stats":{"srtt":25215},"server":"https://redirector.gvt1.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401725062070298","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":40371},"server":"https://accounts.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401725077617716","port":443,"protocol_str":"quic"}],"anonymization":["MAAAACsAAABodHRwczovL29wdGltaXphdGlvbmd1aWRlLXBhLmdvb2dsZWFwaXMuY29tAA==",false,0],"network_stats":{"srtt":20802},"server":"https://optimizationguide-pa.googleapis.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"server":"https://android.clients.google.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"server":"https://loctonelle.ch","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":18776},"server":"https://www.google.com"},{"anonymization":["HAAAABUAAABodHRwczovL21pY3Jvc29mdC5jb20AAAA=",false,0],"server":"https://prod.rewardsplatform.microsoft.com","supports_spdy":true},{"anonymization":["LAAAACYAAABodHRwczovL2VkZ2Vhc3NldHNlcnZpY2UuYXp1cmVlZGdlLm5ldAAA",false,0],"server":"https://edgeassetservice.azureedge.net","supports_spdy":true},{"anonymization":["HAAAABUAAABodHRwczovL21pY3Jvc29mdC5jb20AAAA=",false,0],"server":"https://edge.microsoft.com","supports_spdy":true},{"anonymization":["GAAAABQAAABodHRwczovL2JpbmdhcGlzLmNvbQ==",false,0],"server":"https://www.bingapis.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401732719744325","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":24263},"server":"https://www.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401732720997683","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL29mZmljZS5jb20AAA==",false,0],"network_stats":{"srtt":27434},"server":"https://substrate.office.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401732725158080","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":21914},"server":"https://fonts.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13399234327150864","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwczovL2JpbmcuY29t",false,0],"network_stats":{"srtt":23197},"server":"https://www.bing.com","supports_spdy":true}],"supports_quic":{"address":"192.168.1.10","used_quic":true},"version":5},"network_qualities":{"CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G"}}}
|
||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"sts":[{"expiry":1786004283.096739,"host":"8/RrMmQlCD2Gsp14wUCE1P8r7B2C5+yE0+g79IPyRsc=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1754468283.09674}],"version":2}
|
{"sts":[{"expiry":1786203121.296911,"host":"PKqosHGXLFTwexcsjC+UXTkKV3GWWHwtzKz/ULb9ssM=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1754667121.296916},{"expiry":1786203120.9982,"host":"rmnekbKAq/dxKc3O5aFRkaYg4kOrb8ehfGdmdZ4sxZ0=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1754667120.998204},{"expiry":1770664373.013718,"host":"v72frEbnPsF5f2vKgwdmsdKWBgqMeQrpLqWnqxGv0Ws=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1754664373.013722},{"expiry":1786203120.694324,"host":"7tSAOAx10AkpkhAGpc2+WxFucu2Qg9/ypzW0ZDwcltE=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1754667120.694329},{"expiry":1786195462.070379,"host":"8/RrMmQlCD2Gsp14wUCE1P8r7B2C5+yE0+g79IPyRsc=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1754659462.070382}],"version":2}
|
||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -1,3 +1,3 @@
|
|||||||
2025/08/06-10:18:01.805 2dd4 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Service Worker\Database/MANIFEST-000001
|
2025/08/08-17:31:58.306 39e0 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Service Worker\Database/MANIFEST-000001
|
||||||
2025/08/06-10:18:01.807 2dd4 Recovering log #3
|
2025/08/08-17:31:58.309 39e0 Recovering log #3
|
||||||
2025/08/06-10:18:01.808 2dd4 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Service Worker\Database/000003.log
|
2025/08/08-17:31:58.309 39e0 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Service Worker\Database/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/07/11-09:55:25.505 6e74 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Service Worker\Database/MANIFEST-000001
|
2025/08/08-15:24:20.701 4d90 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Service Worker\Database/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.519 6e74 Recovering log #3
|
2025/08/08-15:24:20.703 4d90 Recovering log #3
|
||||||
2025/07/11-09:55:25.520 6e74 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Service Worker\Database/000003.log
|
2025/08/08-15:24:20.705 4d90 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Service Worker\Database/000003.log
|
||||||
|
|||||||
Binary file not shown.
@@ -1,3 +1,3 @@
|
|||||||
2025/08/06-10:18:01.925 9ec4 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Session Storage/MANIFEST-000001
|
2025/08/08-17:31:58.540 21f8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Session Storage/MANIFEST-000001
|
||||||
2025/08/06-10:18:01.928 9ec4 Recovering log #3
|
2025/08/08-17:31:58.541 21f8 Recovering log #3
|
||||||
2025/08/06-10:18:01.933 9ec4 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Session Storage/000003.log
|
2025/08/08-17:31:58.543 21f8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Session Storage/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/07/11-09:55:25.642 60f8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Session Storage/MANIFEST-000001
|
2025/08/08-15:24:20.852 6fbc Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Session Storage/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.651 60f8 Recovering log #3
|
2025/08/08-15:24:20.853 6fbc Recovering log #3
|
||||||
2025/07/11-09:55:25.654 60f8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Session Storage/000003.log
|
2025/08/08-15:24:20.857 6fbc Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Session Storage/000003.log
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,3 +1,3 @@
|
|||||||
2025/08/06-10:18:01.806 9088 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Site Characteristics Database/MANIFEST-000001
|
2025/08/08-17:31:58.310 221c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Site Characteristics Database/MANIFEST-000001
|
||||||
2025/08/06-10:18:01.808 9088 Recovering log #3
|
2025/08/08-17:31:58.311 221c Recovering log #3
|
||||||
2025/08/06-10:18:01.808 9088 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Site Characteristics Database/000003.log
|
2025/08/08-17:31:58.311 221c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Site Characteristics Database/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/07/11-09:55:25.509 2850 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Site Characteristics Database/MANIFEST-000001
|
2025/08/08-15:24:20.703 30f4 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Site Characteristics Database/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.518 2850 Recovering log #3
|
2025/08/08-15:24:20.706 30f4 Recovering log #3
|
||||||
2025/07/11-09:55:25.518 2850 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Site Characteristics Database/000003.log
|
2025/08/08-15:24:20.706 30f4 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Site Characteristics Database/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/08/06-10:18:01.801 9a44 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Sync Data\LevelDB/MANIFEST-000001
|
2025/08/08-17:31:58.299 8c8c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Sync Data\LevelDB/MANIFEST-000001
|
||||||
2025/08/06-10:18:01.804 9a44 Recovering log #3
|
2025/08/08-17:31:58.300 8c8c Recovering log #3
|
||||||
2025/08/06-10:18:01.805 9a44 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Sync Data\LevelDB/000003.log
|
2025/08/08-17:31:58.301 8c8c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Sync Data\LevelDB/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/07/11-09:55:25.501 3794 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Sync Data\LevelDB/MANIFEST-000001
|
2025/08/08-15:24:20.699 a028 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Sync Data\LevelDB/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.519 3794 Recovering log #3
|
2025/08/08-15:24:20.703 a028 Recovering log #3
|
||||||
2025/07/11-09:55:25.519 3794 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Sync Data\LevelDB/000003.log
|
2025/08/08-15:24:20.705 a028 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Sync Data\LevelDB/000003.log
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,8 +1,6 @@
|
|||||||
2025/08/06-10:18:01.930 3e34 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\shared_proto_db/MANIFEST-000001
|
2025/08/08-17:31:58.557 5788 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\shared_proto_db/MANIFEST-000001
|
||||||
2025/08/06-10:18:01.931 3e34 Recovering log #7
|
2025/08/08-17:31:58.558 5788 Recovering log #10
|
||||||
2025/08/06-10:18:01.932 3e34 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\shared_proto_db/000007.log
|
2025/08/08-17:31:58.559 5788 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\shared_proto_db/000010.log
|
||||||
2025/08/06-10:18:01.933 3e34 Delete type=0 #3
|
2025/08/08-17:31:58.560 5788 Delete type=0 #3
|
||||||
2025/08/06-10:18:01.933 3e34 Delete type=0 #4
|
2025/08/08-17:31:58.560 5788 Delete type=0 #4
|
||||||
2025/08/06-10:18:23.568 9a44 Level-0 table #11: started
|
2025/08/08-17:31:58.560 5788 Delete type=0 #7
|
||||||
2025/08/06-10:18:23.572 9a44 Level-0 table #11: 132849 bytes OK
|
|
||||||
2025/08/06-10:18:23.576 9a44 Delete type=0 #7
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
2025/07/11-09:55:25.644 2138 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\shared_proto_db/MANIFEST-000001
|
2025/08/08-15:24:20.865 400c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\shared_proto_db/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.644 2138 Recovering log #7
|
2025/08/08-15:24:20.866 400c Recovering log #10
|
||||||
2025/07/11-09:55:25.646 2138 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\shared_proto_db/000007.log
|
2025/08/08-15:24:20.866 400c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\shared_proto_db/000010.log
|
||||||
2025/07/11-09:55:25.646 2138 Delete type=0 #3
|
2025/08/08-15:24:20.867 400c Delete type=0 #3
|
||||||
2025/07/11-09:55:25.646 2138 Delete type=0 #4
|
2025/08/08-15:24:20.867 400c Delete type=0 #4
|
||||||
|
2025/08/08-15:24:20.867 400c Delete type=0 #7
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/08/06-10:18:01.924 3e34 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\shared_proto_db\metadata/MANIFEST-000001
|
2025/08/08-17:31:58.552 5788 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\shared_proto_db\metadata/MANIFEST-000001
|
||||||
2025/08/06-10:18:01.925 3e34 Recovering log #3
|
2025/08/08-17:31:58.552 5788 Recovering log #3
|
||||||
2025/08/06-10:18:01.926 3e34 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\shared_proto_db\metadata/000003.log
|
2025/08/08-17:31:58.553 5788 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\shared_proto_db\metadata/000003.log
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
2025/07/11-09:55:25.639 2138 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\shared_proto_db\metadata/MANIFEST-000001
|
2025/08/08-15:24:20.859 64b8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\shared_proto_db\metadata/MANIFEST-000001
|
||||||
2025/07/11-09:55:25.640 2138 Recovering log #3
|
2025/08/08-15:24:20.860 64b8 Recovering log #3
|
||||||
2025/07/11-09:55:25.640 2138 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\shared_proto_db\metadata/000003.log
|
2025/08/08-15:24:20.861 64b8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\shared_proto_db\metadata/000003.log
|
||||||
|
|||||||
478
lib/ui/common/post_card_widget.dart
Normal file
478
lib/ui/common/post_card_widget.dart
Normal file
@@ -0,0 +1,478 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class PostCardWidget extends StatelessWidget {
|
||||||
|
final String title;
|
||||||
|
final String content;
|
||||||
|
final String authorName;
|
||||||
|
final String authorImageUrl;
|
||||||
|
final DateTime publishDate;
|
||||||
|
final List<String>? imageUrls;
|
||||||
|
final int likesCount;
|
||||||
|
final int commentsCount;
|
||||||
|
final int sharesCount;
|
||||||
|
final VoidCallback? onLike;
|
||||||
|
final VoidCallback? onComment;
|
||||||
|
final VoidCallback? onShare;
|
||||||
|
|
||||||
|
const PostCardWidget({
|
||||||
|
Key? key,
|
||||||
|
required this.title,
|
||||||
|
required this.content,
|
||||||
|
required this.authorName,
|
||||||
|
required this.authorImageUrl,
|
||||||
|
required this.publishDate,
|
||||||
|
this.imageUrls,
|
||||||
|
this.likesCount = 0,
|
||||||
|
this.commentsCount = 0,
|
||||||
|
this.sharesCount = 0,
|
||||||
|
this.onLike,
|
||||||
|
this.onComment,
|
||||||
|
this.onShare,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Card(
|
||||||
|
margin: const EdgeInsets.only(bottom: 16.0),
|
||||||
|
//elevation: 2,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
// En-tête avec auteur et date
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(16.0),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
// Photo de profil de l'auteur
|
||||||
|
CircleAvatar(
|
||||||
|
radius: 20,
|
||||||
|
backgroundImage: NetworkImage(authorImageUrl),
|
||||||
|
onBackgroundImageError: (_, __) {},
|
||||||
|
child: authorImageUrl.isEmpty
|
||||||
|
? const Icon(Icons.person, size: 20)
|
||||||
|
: null,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 12),
|
||||||
|
// Nom et date
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
authorName,
|
||||||
|
style: Theme.of(context).textTheme.titleLarge?.copyWith(
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 2),
|
||||||
|
Text(
|
||||||
|
_formatDate(publishDate),
|
||||||
|
style: Theme.of(context).textTheme.bodySmall?.copyWith(
|
||||||
|
color: Colors.grey,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Menu options
|
||||||
|
IconButton(
|
||||||
|
icon: const Icon(Icons.more_vert, color: Colors.grey),
|
||||||
|
onPressed: () {
|
||||||
|
// Action pour le menu
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
// Contenu du post
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
// Contenu
|
||||||
|
Text(
|
||||||
|
content,
|
||||||
|
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
|
||||||
|
color: Colors.white,
|
||||||
|
height: 1.4,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
// Images avec boutons d'action si présentes
|
||||||
|
if (imageUrls != null && imageUrls!.isNotEmpty)
|
||||||
|
Container(
|
||||||
|
//margin: const EdgeInsets.symmetric(vertical: 12.0),
|
||||||
|
height: 200,
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
// Images
|
||||||
|
PageView.builder(
|
||||||
|
itemCount: imageUrls!.length,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
return Container(
|
||||||
|
//margin: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.only(
|
||||||
|
topLeft: Radius.circular(0),
|
||||||
|
topRight: Radius.circular(0),
|
||||||
|
bottomLeft: Radius.circular(8),
|
||||||
|
bottomRight: Radius.circular(8),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: ClipRRect(
|
||||||
|
borderRadius: const BorderRadius.only(
|
||||||
|
topLeft: Radius.circular(0),
|
||||||
|
topRight: Radius.circular(0),
|
||||||
|
bottomLeft: Radius.circular(8),
|
||||||
|
bottomRight: Radius.circular(8),
|
||||||
|
),
|
||||||
|
child: _buildImage(imageUrls![index]),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
// Boutons d'action en overlay à droite
|
||||||
|
Positioned(
|
||||||
|
right: 24,
|
||||||
|
top: 0,
|
||||||
|
bottom: 0,
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
_VerticalActionButton(
|
||||||
|
icon: Icons.favorite_outline,
|
||||||
|
count: likesCount,
|
||||||
|
onPressed: onLike,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 16),
|
||||||
|
_VerticalActionButton(
|
||||||
|
icon: Icons.comment_outlined,
|
||||||
|
count: commentsCount,
|
||||||
|
onPressed: onComment,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 16),
|
||||||
|
_VerticalActionButton(
|
||||||
|
icon: Icons.share_outlined,
|
||||||
|
count: sharesCount,
|
||||||
|
onPressed: onShare,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
// Si pas d'image, boutons d'action en bas à droite
|
||||||
|
if (imageUrls == null || imageUrls!.isEmpty)
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 2.0, horizontal: 16.0),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
_HorizontalActionButton(
|
||||||
|
icon: Icons.favorite_outline,
|
||||||
|
count: likesCount,
|
||||||
|
onPressed: onLike,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 16),
|
||||||
|
_HorizontalActionButton(
|
||||||
|
icon: Icons.comment_outlined,
|
||||||
|
count: commentsCount,
|
||||||
|
onPressed: onComment,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 16),
|
||||||
|
_HorizontalActionButton(
|
||||||
|
icon: Icons.share_outlined,
|
||||||
|
count: sharesCount,
|
||||||
|
onPressed: onShare,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
String _formatDate(DateTime date) {
|
||||||
|
final now = DateTime.now();
|
||||||
|
final difference = now.difference(date);
|
||||||
|
|
||||||
|
if (difference.inDays > 7) {
|
||||||
|
return '${date.day}/${date.month}/${date.year}';
|
||||||
|
} else if (difference.inDays > 0) {
|
||||||
|
return '${difference.inDays} jour${difference.inDays > 1 ? 's' : ''}';
|
||||||
|
} else if (difference.inHours > 0) {
|
||||||
|
return '${difference.inHours}h';
|
||||||
|
} else if (difference.inMinutes > 0) {
|
||||||
|
return '${difference.inMinutes}min';
|
||||||
|
} else {
|
||||||
|
return 'À l\'instant';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildImage(String imageUrl) {
|
||||||
|
// Vérifie si c'est une image d'assets ou une URL réseau
|
||||||
|
if (imageUrl.startsWith('assets/')) {
|
||||||
|
return Image.asset(
|
||||||
|
imageUrl,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
errorBuilder: (context, error, stackTrace) {
|
||||||
|
print('Erreur de chargement d\'asset: $error');
|
||||||
|
return _buildErrorWidget();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return Image.network(
|
||||||
|
imageUrl,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
loadingBuilder: (context, child, loadingProgress) {
|
||||||
|
if (loadingProgress == null) return child;
|
||||||
|
return Container(
|
||||||
|
color: Colors.grey[300],
|
||||||
|
child: Center(
|
||||||
|
child: CircularProgressIndicator(
|
||||||
|
value: loadingProgress.expectedTotalBytes != null
|
||||||
|
? loadingProgress.cumulativeBytesLoaded /
|
||||||
|
loadingProgress.expectedTotalBytes!
|
||||||
|
: null,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
errorBuilder: (context, error, stackTrace) {
|
||||||
|
print('Erreur de chargement d\'image réseau: $error');
|
||||||
|
return _buildErrorWidget();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildErrorWidget() {
|
||||||
|
return Container(
|
||||||
|
color: Colors.grey[300],
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
Icons.broken_image,
|
||||||
|
size: 50,
|
||||||
|
color: Colors.grey[600],
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
Text(
|
||||||
|
'Image non disponible',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey[600],
|
||||||
|
fontSize: 12,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _VerticalActionButton extends StatefulWidget {
|
||||||
|
final IconData icon;
|
||||||
|
final int? count;
|
||||||
|
final VoidCallback? onPressed;
|
||||||
|
|
||||||
|
const _VerticalActionButton({
|
||||||
|
required this.icon,
|
||||||
|
this.count,
|
||||||
|
this.onPressed,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<_VerticalActionButton> createState() => _VerticalActionButtonState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _VerticalActionButtonState extends State<_VerticalActionButton>
|
||||||
|
with SingleTickerProviderStateMixin {
|
||||||
|
late AnimationController _animationController;
|
||||||
|
late Animation<double> _scaleAnimation;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_animationController = AnimationController(
|
||||||
|
duration: const Duration(milliseconds: 150),
|
||||||
|
vsync: this,
|
||||||
|
);
|
||||||
|
_scaleAnimation = Tween<double>(
|
||||||
|
begin: 1.0,
|
||||||
|
end: 0.85,
|
||||||
|
).animate(CurvedAnimation(
|
||||||
|
parent: _animationController,
|
||||||
|
curve: Curves.easeInOut,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_animationController.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _handleTap() async {
|
||||||
|
await _animationController.forward();
|
||||||
|
await _animationController.reverse();
|
||||||
|
widget.onPressed?.call();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return GestureDetector(
|
||||||
|
onTap: _handleTap,
|
||||||
|
child: AnimatedBuilder(
|
||||||
|
animation: _scaleAnimation,
|
||||||
|
builder: (context, child) {
|
||||||
|
return Transform.scale(
|
||||||
|
scale: _scaleAnimation.value,
|
||||||
|
child: Container(
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.black.withOpacity(0.6),
|
||||||
|
borderRadius: BorderRadius.circular(20),
|
||||||
|
),
|
||||||
|
child: Icon(
|
||||||
|
widget.icon,
|
||||||
|
size: 24,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
if (widget.count != null && widget.count! > 0) ...[
|
||||||
|
const SizedBox(height: 4),
|
||||||
|
Text(
|
||||||
|
widget.count! > 999 ? '999+' : '${widget.count}',
|
||||||
|
style: const TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _HorizontalActionButton extends StatefulWidget {
|
||||||
|
final IconData icon;
|
||||||
|
final int? count;
|
||||||
|
final VoidCallback? onPressed;
|
||||||
|
|
||||||
|
const _HorizontalActionButton({
|
||||||
|
required this.icon,
|
||||||
|
this.count,
|
||||||
|
this.onPressed,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<_HorizontalActionButton> createState() => _HorizontalActionButtonState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _HorizontalActionButtonState extends State<_HorizontalActionButton>
|
||||||
|
with SingleTickerProviderStateMixin {
|
||||||
|
late AnimationController _animationController;
|
||||||
|
late Animation<double> _scaleAnimation;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_animationController = AnimationController(
|
||||||
|
duration: const Duration(milliseconds: 150),
|
||||||
|
vsync: this,
|
||||||
|
);
|
||||||
|
_scaleAnimation = Tween<double>(
|
||||||
|
begin: 1.0,
|
||||||
|
end: 0.85,
|
||||||
|
).animate(CurvedAnimation(
|
||||||
|
parent: _animationController,
|
||||||
|
curve: Curves.easeInOut,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_animationController.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _handleTap() async {
|
||||||
|
await _animationController.forward();
|
||||||
|
await _animationController.reverse();
|
||||||
|
widget.onPressed?.call();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return GestureDetector(
|
||||||
|
onTap: _handleTap,
|
||||||
|
child: AnimatedBuilder(
|
||||||
|
animation: _scaleAnimation,
|
||||||
|
builder: (context, child) {
|
||||||
|
return Transform.scale(
|
||||||
|
scale: _scaleAnimation.value,
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 8.0),
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.grey[100],
|
||||||
|
borderRadius: BorderRadius.circular(20),
|
||||||
|
),
|
||||||
|
child: Icon(
|
||||||
|
widget.icon,
|
||||||
|
size: 20,
|
||||||
|
color: Colors.grey[900],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
if (widget.count != null && widget.count! > 0) ...[
|
||||||
|
const SizedBox(height: 4),
|
||||||
|
Text(
|
||||||
|
widget.count! > 999 ? '999+' : '${widget.count}',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey[100],
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:stacked/stacked.dart';
|
import 'package:stacked/stacked.dart';
|
||||||
|
|
||||||
import 'event_details_viewmodel.dart';
|
import 'event_details_viewmodel.dart';
|
||||||
|
import '../../common/post_card_widget.dart';
|
||||||
|
|
||||||
class EventDetailsView extends StackedView<EventDetailsViewModel> {
|
class EventDetailsView extends StackedView<EventDetailsViewModel> {
|
||||||
final int eventId;
|
final int eventId;
|
||||||
@@ -203,13 +204,28 @@ class EventDetailsView extends StackedView<EventDetailsViewModel> {
|
|||||||
child: viewModel.selectedTabIndex == 0
|
child: viewModel.selectedTabIndex == 0
|
||||||
? Column(
|
? Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: List.generate(50, (index) {
|
children: List.generate(10, (index) {
|
||||||
return Card(
|
return PostCardWidget(
|
||||||
margin: const EdgeInsets.only(bottom: 8.0),
|
title: 'Publication ${index + 1}',
|
||||||
child: ListTile(
|
content: 'Voici le contenu de la publication ${index + 1}. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
||||||
title: Text('Publication ${index + 1}'),
|
authorName: 'L\'Octonelle',
|
||||||
subtitle: Text('Description de la publication ${index + 1}'),
|
authorImageUrl: '', // URL vide pour utiliser l'icône par défaut
|
||||||
),
|
publishDate: DateTime.now().subtract(Duration(days: index)),
|
||||||
|
imageUrls: index % 3 == 0 ? ['assets/images/Affiche.jpg'] : null,
|
||||||
|
likesCount: (index + 1) * 5,
|
||||||
|
commentsCount: (index + 1) * 2,
|
||||||
|
onLike: () {
|
||||||
|
// Action lors du clic sur "J'aime"
|
||||||
|
print('Like publication ${index + 1}');
|
||||||
|
},
|
||||||
|
onComment: () {
|
||||||
|
// Action lors du clic sur "Commenter"
|
||||||
|
print('Comment publication ${index + 1}');
|
||||||
|
},
|
||||||
|
onShare: () {
|
||||||
|
// Action lors du clic sur "Partager"
|
||||||
|
print('Share publication ${index + 1}');
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -10,3 +10,15 @@ class EventDetailsViewModel extends BaseViewModel {
|
|||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class Post {
|
||||||
|
final String id;
|
||||||
|
final String title;
|
||||||
|
final String content;
|
||||||
|
|
||||||
|
Post({
|
||||||
|
required this.id,
|
||||||
|
required this.title,
|
||||||
|
required this.content,
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user