From 1a0ecee501aaa592d154cc97fd666d91de59234d Mon Sep 17 00:00:00 2001 From: Vitalij Date: Tue, 17 Jun 2025 20:56:48 +0300 Subject: [PATCH 1/3] =?UTF-8?q?feature(statistick):=20=D0=9E=D1=81=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BD=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=D0=B0=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D0=B8=D1=81=D1=82=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dart_tool/package_config.json | 2 +- .flutter-plugins-dependencies | 2 +- assets/.DS_Store | Bin 10244 -> 10244 bytes assets/icons/stats_best.png | Bin 0 -> 1779 bytes assets/icons/stats_card.png | Bin 0 -> 1061 bytes assets/icons/stats_down.png | Bin 0 -> 397 bytes assets/icons/stats_repeat.png | Bin 0 -> 764 bytes assets/icons/stats_time.png | Bin 0 -> 1139 bytes assets/icons/stats_up.png | Bin 0 -> 429 bytes lib/common/typography.dart | 5 + lib/gen/assets.gen.dart | 29 ++ lib/i18n/strings.g.dart | 2 +- lib/router.gr.dart | 27 +- lib/screens/settings/states/about.dart | 5 +- lib/screens/statistick/statistick_screen.dart | 247 +++++++++++++++++- 15 files changed, 308 insertions(+), 11 deletions(-) create mode 100644 assets/icons/stats_best.png create mode 100644 assets/icons/stats_card.png create mode 100644 assets/icons/stats_down.png create mode 100644 assets/icons/stats_repeat.png create mode 100644 assets/icons/stats_time.png create mode 100644 assets/icons/stats_up.png diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index 5ec4839..d11a282 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -1130,7 +1130,7 @@ "languageVersion": "3.7" } ], - "generated": "2025-06-16T19:03:33.328096Z", + "generated": "2025-06-17T17:48:52.089260Z", "generator": "pub", "generatorVersion": "3.7.0", "flutterRoot": "file:///Users/vitalijnecitajlo/fvm/versions/3.29.0", diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies index 7ea77c9..54bf22b 100644 --- a/.flutter-plugins-dependencies +++ b/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/fluttertoast-8.2.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"flutter_displaymode","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_displaymode-0.6.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_plugin_android_lifecycle","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.27/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/fluttertoast-8.2.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_android-2.2.16/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_macos","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_macos-3.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_linux","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_linux-1.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":false,"dependencies":["url_launcher_linux"],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_linux","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.1/","native_build":true,"dependencies":[],"dev_dependency":false}],"windows":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_windows","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-3.1.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":true,"dependencies":["url_launcher_windows"],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_windows","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.4/","native_build":true,"dependencies":[],"dev_dependency":false}],"web":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_web","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.2.1/","dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/fluttertoast-8.2.12/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","dependencies":["url_launcher_web"],"dev_dependency":false},{"name":"url_launcher_web","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.0/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"flutter_displaymode","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_secure_storage","dependencies":["flutter_secure_storage_linux","flutter_secure_storage_macos","flutter_secure_storage_web","flutter_secure_storage_windows"]},{"name":"flutter_secure_storage_linux","dependencies":[]},{"name":"flutter_secure_storage_macos","dependencies":[]},{"name":"flutter_secure_storage_web","dependencies":[]},{"name":"flutter_secure_storage_windows","dependencies":["path_provider"]},{"name":"fluttertoast","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"share_plus","dependencies":["url_launcher_web","url_launcher_windows","url_launcher_linux"]},{"name":"sqlite3_flutter_libs","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2025-06-16 22:03:31.911393","version":"3.29.0","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/fluttertoast-8.2.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"flutter_displaymode","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_displaymode-0.6.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_plugin_android_lifecycle","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.27/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/fluttertoast-8.2.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_android-2.2.16/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_macos","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_macos-3.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_linux","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_linux-1.2.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":false,"dependencies":["url_launcher_linux"],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_linux","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.1/","native_build":true,"dependencies":[],"dev_dependency":false}],"windows":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_windows","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-3.1.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","native_build":true,"dependencies":["url_launcher_windows"],"dev_dependency":false},{"name":"sqlite3_flutter_libs","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_windows","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.4/","native_build":true,"dependencies":[],"dev_dependency":false}],"web":[{"name":"file_picker","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/","dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_web","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.2.1/","dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/fluttertoast-8.2.12/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/","dependencies":[],"dev_dependency":false},{"name":"share_plus","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/","dependencies":["url_launcher_web"],"dev_dependency":false},{"name":"url_launcher_web","path":"/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.0/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"flutter_displaymode","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_secure_storage","dependencies":["flutter_secure_storage_linux","flutter_secure_storage_macos","flutter_secure_storage_web","flutter_secure_storage_windows"]},{"name":"flutter_secure_storage_linux","dependencies":[]},{"name":"flutter_secure_storage_macos","dependencies":[]},{"name":"flutter_secure_storage_web","dependencies":[]},{"name":"flutter_secure_storage_windows","dependencies":["path_provider"]},{"name":"fluttertoast","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"share_plus","dependencies":["url_launcher_web","url_launcher_windows","url_launcher_linux"]},{"name":"sqlite3_flutter_libs","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2025-06-17 20:49:46.224491","version":"3.29.0","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file diff --git a/assets/.DS_Store b/assets/.DS_Store index d07000fee543e9ed4d8b2de1bc52e15a2255b7e6..0d775bbb8b0a25380144bbdff6baf2d7bd2b1266 100644 GIT binary patch delta 1041 zcmeIvT}YEr7zgm@f2??4I@;OVa+}&)4Zmtl!xb}9mZj;mHgJCQ0cH8F-jpqx%(9CR zjlR3+t!_=Kn*y-PSv* z{?fwbWxmR)n!4bY=>?&17hZ0H1p_#sidsUH8BV9(UGo83r z@d`zBsx93eyY=o&w1)c?(Wtg1GgoFpIr)awWV^@=EX+Tu+A^>BwSyEYpd#{9fFcy7 zIQ7#R8lrKUpnLR`UeFtQN1rK0-{?F2Ko&Uc$b|z=EQ1?`C_)9+p$gRqq8Smiq76Hs zBZ_@65JN8xp$|vUk5i~Ujk7q1OBljs4C6Y+Fpk@}gGYFV=a|APyvGN8M2a!SSvJdI zxy->_ERT6v8S}ICEXYD;i7hPowN3R6LEiKmfBv8NO{d+E%men7f@@-~6jY`iPFG%0 zF*hgei#KwSCFRw0w%Vg{f!U&RE$3p6{DVxdx}FX=6P zqOX*~Jj{oHh7x$;ldg5BM6gi#|fOod91jA xi)rU!T)|ab!w5!k6Sr^|6S$8_JitRd!8BfDX6(x%OU@EKu~Yn)`)fHHegZ1Y>>L09 delta 1045 zcmeH_T}YE*6vxm1amM@dpnKl6sZHk+X-iwRa9Re+n3nmGj-0wK(xzK58gp%7ScH9O z7g^oBP)SA9Mf8OQW?vWGM5GX1#EOW%uDXaWGN_A!=wY+&s*7$r7w7Q*A2<*E{?Dj? z)PKD~Q+b{>(AC`&+^nC|EP9<5ULA}M48}X7yCZ$VG!%{O>PYO24#rd6kz`6vRh`T) zEGb)3xzbZx=Ud;>o;C{2#LZlPuQh|~9+SI+JFOL}2q}S-ypr9!_zG2|)WG&=Je+Z? zt9X?n!fID6)E|juts1^Y5v^*^Q1+>;DKAf%bT$^$D+@|S%DryNlsP+ob&x_fa+8l* zsFxBnOyhK%&e9EFO9*hvsU_~)(D8({(P>mY+(26#+ zqXPkKK`*up46n80~l!BtG+8t&mCW-yC1Ug0&~U=ClI zf#tFV%*X^Yv4zaRoXpK?nU6K;OU-^6fW2u$b4zR6&j9Ry2|zEiL?!5P%W}c(B3Ck0 z(nX7`#SSOeXDp?ST;xdhYR0Q}*}1^Hs9npsFvt|LyLy|HG%tJ&cDqo-jG`#z-hX2~ zOHb%Iy`>M5^>^ezK_M2y0hc6O4=)#ADhsbA>1eV_G17s#3kb$NMaB6qG|;D zupftU1V=NZCvXa{qF1jC-+BkX8Ztu C2koN( diff --git a/assets/icons/stats_best.png b/assets/icons/stats_best.png new file mode 100644 index 0000000000000000000000000000000000000000..98b549343c0c0f5f55d728ac776460cee7e1f01b GIT binary patch literal 1779 zcmVL98yZJvpwB4U)S%~OY}tkM>n}f=RqJ47UvmqzN7*w#`JK*@@N8>>*6^`}zZ*2DKp>t9_=H7+2|Oz&W>v%s zwByfniMDq8zC8hyUuYWds@gV|RZPwB>$IA=XN5*-!1jEcysu79j_n2H?!c|lw5+hm z8hgBSj`k?nQx)iRVXt2O$pTOTYUamw<*T-^QqE*0fI4yYqT z&)xyv<3|`??)5*p{0R%M;{boyc+hv-czRlq(@eJnWO^)^r&^J%+XTn9e09ra)%!QOaoS{(vC331rk4F03%p6 z3?IOy4f!dk$zoev{!0r0#~20q0mXj508Oc*5pyr0&Nb(MM2(AN7GsnmfR9MW0>44? zC?8rzDim_vo`qa6OFh*}3Vs(Q#`6a1sh0GSeFG#dwoa@!@Y^kbCTg*e_3r|olz>mR zVh*7&kGV10mRDfSt=OW0r1m?hqo8YCkI?}Ds*5$AQet2&)-)lwEZ?EKbO@}E#NtH& zC}04LznIobe*vWarGo&h8#u&EDuxu~`yOsYEX5$FyLN5^bf_T!ONDYAZmp-DJ0z83 z1t?oFqArgX`g`t-@a83&_V(A5$2T<(*a1pP_cYzf*zXz)XL6fWOoR+dMd_6AG#)KD%OQw zu1ra&FUX!QmOHQ7dsW;5~S3D2a$ zpS7+Ca$BzhykhIcEL!ShOkDu6Nx_xvOCVK#v!k@MfR?SCNV^49oph>4g21KE&|G`6 zq(G7qVOC2bzSAI60Ok8&77G#*30J(6Ps`1sM*wyJu5{ee%DCv`Gn70F{ zxJtxKrwKl_@H$*9aIyVzkvu|%VeXS&4PUO)BG#R@unSPY&%}MzfNv8DGRH0x#8t=s zWDP=!)mqJVsCSD^KHK7mDGTyhf8N-z=T*A^S*wESJ<33bHRW2MF?TAq6teS7tLeui zgGxrV)MY*P(?0;`kc^SBcDxIu#L4GaTS{S~43VqIP~n@fz%Y(d;*a8h$NV%7QB5*d z>sqzv{uHqk@CN3N;@Jg&>Y3qP7VH!QK~#7F?N>`u z8!-@-hhfELZV+<12Aeb5IjMm4n{U0hsz0c*X!zSe8C+6a6Io?&dTw6v79 z+wI|d_FD+h`T2Q5FePFHm!b{!_V!ZsuK)pz2Kz35H+fj6(}`AAR$}~*p`|ToOHZ%E zSfAkb_xHQ%Zvuj;df2@2^73+gaB$F31;8m61i=P)JUO^l8)EG?fMp8)}A}bbPzY77;t^#IzcXzk1X31=HV-JddY_ji&ERFrN8vBou{ns!@o|Xa1 z5A=XhIE49yUFSSW%*2*Q7Bm+-Or+(!v=ERQn<%1FyPVS`JD4yvW0bwWzmHrICu48M zAzz2D)zy^Qoq(9Is3k0j%`FW{c4pLN_Td26LlkN__E6Rgd>SUf-)O=avy%dcyb+2W zb6P;ZxfM1Z$VKXCO-37nqp3VZvrD&M3dlNa%Q3eh-8cCMK63?)tOCe7{B=ZST<0zb)d}c2MBsGh&zcW@IiPW4#7br8k6A(h!_<`mo?C_(h z#@dNbPfuHF4zjBRpV^&&#E(*Y6WQQ6Ularha?VdUXv^}gD&(vZZ1R>LlC(4;PAkb5 z3~vA!Sp`?eoea`zO`o{FP(S z7(b#+aN72tf}*Z6mA*P~;0^%v&}~Rlh&*M1phj4t-Yg0x->-_0n5BcmKgkeFja%@n f%JcYx{%iUJ0P#FHcC%sC00000NkvXXu0mjfo@3v8 literal 0 HcmV?d00001 diff --git a/assets/icons/stats_down.png b/assets/icons/stats_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2ecc412a43ee5e7c2b55f4c8026c2736d4bc82d8 GIT binary patch literal 397 zcmV;80doF{P)71Q{00009a7bBm000&x z000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2O+f$vv5yPGkR33=Fb?}*CoI7VJW0w?(U7L8Z_xjq+oU%i@pyIwFvLF~ z(gKpF_!pg<5~Q~m6RprXtZbHW$FjRL+bi0FaDjxjhc1xx@(SVwT7y(ElQz3VD+My6 zqy1*^JQeSEIsd=x@Th$H7D$Kf$?SH>g;@sAsjLii$le?|3S^67mVtlyBhVEHv_eyu zcmC*#?+86VnVrGtBL%N0Wkm2LZepOYNP>Zn0-aDh%M@k5)~FlkNbzh%QKAFudzMvI zQKADKv7RmYvQc2XXX)qYitmc#t7pF~1E1eh`iczyOV5{C0)w8d@MV@jhws^dFS7-H rcsAh6>{!n_*Crs5g7qwkJ`%VC&75w`5#Zi+00000NkvXXu0mjf*U6`j literal 0 HcmV?d00001 diff --git a/assets/icons/stats_repeat.png b/assets/icons/stats_repeat.png new file mode 100644 index 0000000000000000000000000000000000000000..cc4ba9f698b6de0bd76f3b17f6cbcec1b16c52b6 GIT binary patch literal 764 zcmVMks#V~aTo$AKcC{ftUAfA8@88`{ zuD^YUBfND6k+=}*-!s9R!XcFQXF?qF*6dkDot?s+wy)?2xWt0#|9FF6A!W&p3 z+A3u)j~gk9={lrKqM8nX^S-G7akkaz u%pj#-C2q(dPP3b0A)`3w?CLY})8;SENE5-d;=}g<0000U6u!6t}N`5Lrq?-Iy%8RZb?4a~7 zQoz%D2MlAdjmIrfl_MdrnVEa$&V3H>pF@E@_5yAZ}r%W?X#a0z5{8D|X%u!ID#BucJ@6Cn{#s6e&Rv3q!pNbV#%PFA|e&oEbQ~gk_DxjFWa# zYONy}kPIcr&L9NNwO94lot+OG?`4;HSz~|4Dbf)a#snnJF7NG1*!aLq!kQp*g~=Py zh$1%}GR!XQL{WLVb!!)C?AZS3=*t|kU_wwnD{|?fTy$3la;~kIfJw5Z$MU4Ej5!2( z_oRiq_e@7nT11*6@8?acb(Pjbv^Yc1?Q7%&+RX&PH4fO(h*;fw4%1@L5r6i6P%Nus zkr<%n{UoxPpo+&wP#HJnRquIG+VgPLu{-qD9X+l+Elp%2h#>k}AQclMUL;6!7uxS= zg1!L~Kk)*v#8`tIb2euF*B^-B+GH$Vq`-9DXgSGB{y@lU^+oB>q)AFyng$_%Pyg>D zC@|Sg>~emD*4@Xv^#~A{{pQv7pJAbB{p#>f>%EPo{ z`)~S*fLc-)ToZ3lnrE*wPU4G85lK82#3XI9^GwOfvu4#MObDg~8rmY+s8T2j*PY^RI_Sb;AJsOZ220@sytfK4$;aY~!9s~Lt~ z3K22~J5C~!Vc;B0Rrfj(t9tLqoN}=V@=m!9)Fz+KvlUaQs$Hv`!ZKHACK>h#a$+xR zE2PP!mp~qJS!azm%MJpq%cEwj7Bqf-+qwO{M#GM@SFxIJc9P{3etFMJ7B&a2>XD1^ z+b5)jjCsVK4463OV+CkZYLEh;^-9&InM-}|ps4fg1gO~_vzI_W( znpAcq(eQ2!DCo1{e+>}I<^CCYbYq@eqst@Jd@mtSWRAj!GFAt8=QUcqF}_RWN?j2X zsGHnM7~gJ<$+BQU$0w+$(Aosf7^W4?i-5z1$;JAs!5@G^t4<<6RHgs`002ovPDHLk FV1l^n21x(_ literal 0 HcmV?d00001 diff --git a/assets/icons/stats_up.png b/assets/icons/stats_up.png new file mode 100644 index 0000000000000000000000000000000000000000..d29bc332323d7bcd246efd4ff0c929496d933c70 GIT binary patch literal 429 zcmV;e0aE^nP)71Q{00009a7bBm000&x z000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2O+f$vv5yPA>td*fZX9D&{CivA&ZhD(5B=D&LN;CM@WsxZg%C!mVb74W|Vx@ z%Cp|l8@+icB-CYv;xqkN}M~3w3DRwEWFk}=Tsmk%Z-ulX6g_>@L zj=lK|mHiD{qf}sH4fIwn!EOkFy6#o&RXLxfeO^lO=Iqoo^fibvyC&0-PV-XAY|ai9 zO4cC8C})QXLwPA>l(T)qXkJPg=4?CC(;3A_XP{OgJujtnIh<C_Ze?Dp6iau{nDH X1|pH#3VHHu00000NkvXXu0mjf;_k91 literal 0 HcmV?d00001 diff --git a/lib/common/typography.dart b/lib/common/typography.dart index b5529c8..bd92665 100644 --- a/lib/common/typography.dart +++ b/lib/common/typography.dart @@ -103,6 +103,11 @@ class Bold14px extends TypographyTypeBold { double get size => 14; } +class Bold24px extends TypographyTypeBold { + @override + double get size => 24; +} + class Bold34px extends TypographyTypeBold { @override double get size => 34; diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index 872fcdc..68c3ffb 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -61,6 +61,29 @@ class $AssetsIconsGen { AssetGenImage get settingsTrash => const AssetGenImage('assets/icons/settings_trash.png'); + /// File path: assets/icons/stats_best.png + AssetGenImage get statsBest => + const AssetGenImage('assets/icons/stats_best.png'); + + /// File path: assets/icons/stats_card.png + AssetGenImage get statsCard => + const AssetGenImage('assets/icons/stats_card.png'); + + /// File path: assets/icons/stats_down.png + AssetGenImage get statsDown => + const AssetGenImage('assets/icons/stats_down.png'); + + /// File path: assets/icons/stats_repeat.png + AssetGenImage get statsRepeat => + const AssetGenImage('assets/icons/stats_repeat.png'); + + /// File path: assets/icons/stats_time.png + AssetGenImage get statsTime => + const AssetGenImage('assets/icons/stats_time.png'); + + /// File path: assets/icons/stats_up.png + AssetGenImage get statsUp => const AssetGenImage('assets/icons/stats_up.png'); + /// File path: assets/icons/type=arrow_down.png AssetGenImage get typeArrowDown => const AssetGenImage('assets/icons/type=arrow_down.png'); @@ -271,6 +294,12 @@ class $AssetsIconsGen { settingsProfile, settingsShare, settingsTrash, + statsBest, + statsCard, + statsDown, + statsRepeat, + statsTime, + statsUp, typeArrowDown, typeBack, typeBold, diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index d08ccee..bd6bd7c 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -6,7 +6,7 @@ /// Locales: 2 /// Strings: 20 (10 per locale) /// -/// Built on 2025-06-16 at 19:03 UTC +/// Built on 2025-06-17 at 17:49 UTC // coverage:ignore-file // ignore_for_file: type=lint, unused_import diff --git a/lib/router.gr.dart b/lib/router.gr.dart index 9b13338..189f9f3 100644 --- a/lib/router.gr.dart +++ b/lib/router.gr.dart @@ -11,6 +11,7 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'package:auto_route/auto_route.dart' as _i13; import 'package:flutter/cupertino.dart' as _i14; +import 'package:flutter/material.dart' as _i16; import 'package:remever/database/database.dart' as _i15; import 'package:remever/screens/auth/auth_screen.dart' as _i1; import 'package:remever/screens/collections/collection_detail_screen.dart' @@ -366,16 +367,34 @@ class SplashRoute extends _i13.PageRouteInfo { /// generated route for /// [_i12.StatistickScreen] -class StatistickRoute extends _i13.PageRouteInfo { - const StatistickRoute({List<_i13.PageRouteInfo>? children}) - : super(StatistickRoute.name, initialChildren: children); +class StatistickRoute extends _i13.PageRouteInfo { + StatistickRoute({_i16.Key? key, List<_i13.PageRouteInfo>? children}) + : super( + StatistickRoute.name, + args: StatistickRouteArgs(key: key), + initialChildren: children, + ); static const String name = 'StatistickRoute'; static _i13.PageInfo page = _i13.PageInfo( name, builder: (data) { - return const _i12.StatistickScreen(); + final args = data.argsAs( + orElse: () => const StatistickRouteArgs(), + ); + return _i12.StatistickScreen(key: args.key); }, ); } + +class StatistickRouteArgs { + const StatistickRouteArgs({this.key}); + + final _i16.Key? key; + + @override + String toString() { + return 'StatistickRouteArgs{key: $key}'; + } +} diff --git a/lib/screens/settings/states/about.dart b/lib/screens/settings/states/about.dart index 14789d8..3e574eb 100644 --- a/lib/screens/settings/states/about.dart +++ b/lib/screens/settings/states/about.dart @@ -9,6 +9,7 @@ import 'package:remever/components/extensions/context.dart'; import 'package:remever/gen/assets.gen.dart'; import 'package:remever/screens/settings/cubit/settings_cubit.dart'; import 'package:remever/widgets/primary_button.dart'; +import 'package:share_plus/share_plus.dart'; class AboutSettingsState extends StatelessWidget { const AboutSettingsState({super.key}); @@ -32,8 +33,8 @@ class AboutSettingsState extends StatelessWidget { ), actions: [ IconButton( - onPressed: () { - showInfoToast('тут будет sharing'); + onPressed: () async { + await Share.share('Присоединяйся к нам в REMEVER'); }, icon: Assets.icons.settingsShare.image(height: 24.h, width: 24.w), color: Colors.black, diff --git a/lib/screens/statistick/statistick_screen.dart b/lib/screens/statistick/statistick_screen.dart index e13b56f..b0eb6a7 100644 --- a/lib/screens/statistick/statistick_screen.dart +++ b/lib/screens/statistick/statistick_screen.dart @@ -1,12 +1,255 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:remever/common/resources.dart'; +import 'package:remever/common/widgets/typography.dart'; +import 'package:remever/common/widgets/wspace.dart'; +import 'package:remever/components/extensions/context.dart'; +import 'package:remever/gen/assets.gen.dart'; +import 'package:share_plus/share_plus.dart'; +import 'package:intl/intl.dart'; @RoutePage() class StatistickScreen extends StatelessWidget { - const StatistickScreen({super.key}); + StatistickScreen({super.key}); + + final DateTime today = DateTime.now(); @override Widget build(BuildContext context) { - return const Placeholder(color: Colors.orange); + return Scaffold( + backgroundColor: AppColors.bg, + appBar: _buildAppBar(context), + body: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16).r, + child: SingleChildScrollView( + physics: BouncingScrollPhysics(), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 16).r, + child: Container( + decoration: BoxDecoration( + color: AppColors.white, + borderRadius: BorderRadius.all(Radius.circular(12)).r, + ), + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 12, vertical: 16).r, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Center( + child: AppTypography( + "Лучший результат за день", + type: Medium16px(), + ), + ), + Center( + child: AppTypography( + DateFormat('dd.MM.yyyy').format(today), + type: Regular14px(), + color: AppColors.disabled, + ), + ), + HSpace(16), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + spacing: 8.r, + children: [ + _buildStatBlock( + "230", + "повторили\nкарточек", + Color(0xFFD7E6F4), + Color(0xFF0058AB), + ), + _buildStatBlock( + "19", + "прошли\nтренировок", + Color(0xFFFFE4E6), + Color(0xFFFF5C69), + ), + _buildStatBlock( + "196", + "вырос\nуровень", + Color(0xFFD7F4EA), + Color(0xFF008456), + ), + ], + ), + HSpace(32), + _buildSectionHeader( + "Повторили карточек", + Assets.icons.statsRepeat, + ), + HSpace(16), + _buildStatisticsList([ + {"label": "За сегодня", "value": "77"}, + {"label": "За эту неделю", "value": "188"}, + {"label": "За прошлую неделю", "value": "33"}, + {"label": "За последний месяц", "value": "1669"}, + {"label": "За все время", "value": "1345669"}, + ]), + HSpace(32), + _buildSectionHeader( + "Всего изучено карточек", + Assets.icons.statsBest, + ), + HSpace(16), + _buildStatisticsList([ + {"label": "За сегодня", "value": "77"}, + {"label": "За эту неделю", "value": "188"}, + {"label": "За прошлую неделю", "value": "33"}, + {"label": "За последний месяц", "value": "1669"}, + {"label": "За все время", "value": "1345669"}, + ]), + HSpace(32), + _buildSectionHeader( + "Прошли тренировок", + Assets.icons.statsTime, + ), + HSpace(16), + _buildStatisticsList([ + {"label": "За сегодня", "value": "77"}, + {"label": "За эту неделю", "value": "188"}, + {"label": "За прошлую неделю", "value": "33"}, + {"label": "За последний месяц", "value": "1669"}, + {"label": "За все время", "value": "1345669"}, + ]), + HSpace(32), + _buildSectionHeader( + "Вырос уровень у карточек", + Assets.icons.statsUp, + ), + HSpace(16), + _buildStatisticsList([ + {"label": "За сегодня", "value": "77"}, + {"label": "За эту неделю", "value": "188"}, + {"label": "За прошлую неделю", "value": "33"}, + {"label": "За последний месяц", "value": "1669"}, + {"label": "За все время", "value": "1345669"}, + ]), + HSpace(32), + _buildSectionHeader( + "Снизился уровень у карточек", + Assets.icons.statsDown, + ), + HSpace(16), + _buildStatisticsList([ + {"label": "За сегодня", "value": "77"}, + {"label": "За эту неделю", "value": "188"}, + {"label": "За прошлую неделю", "value": "33"}, + {"label": "За последний месяц", "value": "1669"}, + {"label": "За все время", "value": "1345669"}, + ]), + ], + ), + ), + ), + ), + ), + ), + ); + } + + /// AppBar экрана настроек + AppBar _buildAppBar(BuildContext context) { + return AppBar( + toolbarHeight: 66.h, + backgroundColor: AppColors.white, + shadowColor: Colors.transparent, + centerTitle: true, + leadingWidth: 0, + title: AppTypography('Статистика', type: SemiBold20px()), + actions: [ + IconButton( + onPressed: () => Share.share('Зацени мою статистику в REMEVER'), + icon: Assets.icons.settingsShare.image(height: 24.h, width: 24.w), + color: Colors.black, + ), + ], + ); + } + + // Вспомогательные методы + + Widget _buildStatBlock( + String value, + String label, + Color color, + Color textColor, + ) { + return Expanded( + child: Container( + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(12).r, + ), + padding: EdgeInsets.all(12).r, + child: Column( + children: [ + AppTypography(value, type: Bold24px(), color: textColor), + AppTypography( + label, + type: Regular12px(), + color: textColor, + maxLines: 2, + textAlign: TextAlign.center, + ), + ], + ), + ), + ); + } + + Widget _buildSectionHeader(String title, AssetGenImage icon) { + return Row( + children: [ + icon.image(height: 20.h, width: 20.w), + WSpace(4), + AppTypography(title, type: Medium16px()), + ], + ); + } + + Widget _buildStatisticsList(List> data) { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(12)).r, + color: AppColors.bg, + ), + child: Padding( + padding: const EdgeInsets.all(12).r, + child: Column( + spacing: 8.r, + children: + data + .map( + (e) => Row( + children: [ + Expanded( + child: AppTypography( + e['label']!, + type: Regular16px(), + ), + ), + Assets.icons.statsCard.image(height: 18.h, width: 18.w), + AppTypography(e["value"]!, type: Regular16px()), + ], + ), + ) + .toList(), + ), + ), + ); + return ListView.builder( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: data.length, + itemBuilder: (context, index) { + final item = data[index]; + return ListTile( + title: Text(item["label"]!), + trailing: Text(item["value"]!), + ); + }, + ); } } From e3d3bcfb68e0bf724397ab91db0c3d4bb8b4651d Mon Sep 17 00:00:00 2001 From: Vitalij Date: Tue, 17 Jun 2025 20:59:23 +0300 Subject: [PATCH 2/3] =?UTF-8?q?feature(statistick):=20=D0=9E=D1=81=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BD=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=D0=B0=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D0=B8=D1=81=D1=82=D0=B8=D0=BA=D0=B8=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/screens/statistick/statistick_screen.dart | 64 ++++++++----------- 1 file changed, 28 insertions(+), 36 deletions(-) diff --git a/lib/screens/statistick/statistick_screen.dart b/lib/screens/statistick/statistick_screen.dart index b0eb6a7..3e0ffa8 100644 --- a/lib/screens/statistick/statistick_screen.dart +++ b/lib/screens/statistick/statistick_screen.dart @@ -50,30 +50,7 @@ class StatistickScreen extends StatelessWidget { ), ), HSpace(16), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - spacing: 8.r, - children: [ - _buildStatBlock( - "230", - "повторили\nкарточек", - Color(0xFFD7E6F4), - Color(0xFF0058AB), - ), - _buildStatBlock( - "19", - "прошли\nтренировок", - Color(0xFFFFE4E6), - Color(0xFFFF5C69), - ), - _buildStatBlock( - "196", - "вырос\nуровень", - Color(0xFFD7F4EA), - Color(0xFF008456), - ), - ], - ), + _buildTodayStats(), HSpace(32), _buildSectionHeader( "Повторили карточек", @@ -149,6 +126,33 @@ class StatistickScreen extends StatelessWidget { ); } + Widget _buildTodayStats() { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + spacing: 8.r, + children: [ + _buildStatBlock( + "230", + "повторили\nкарточек", + Color(0xFFD7E6F4), + Color(0xFF0058AB), + ), + _buildStatBlock( + "19", + "прошли\nтренировок", + Color(0xFFFFE4E6), + Color(0xFFFF5C69), + ), + _buildStatBlock( + "196", + "вырос\nуровень", + Color(0xFFD7F4EA), + Color(0xFF008456), + ), + ], + ); + } + /// AppBar экрана настроек AppBar _buildAppBar(BuildContext context) { return AppBar( @@ -239,17 +243,5 @@ class StatistickScreen extends StatelessWidget { ), ), ); - return ListView.builder( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - itemCount: data.length, - itemBuilder: (context, index) { - final item = data[index]; - return ListTile( - title: Text(item["label"]!), - trailing: Text(item["value"]!), - ); - }, - ); } } From 0842c479c72f1ca4a0e56312b33bdd604f7bcb2a Mon Sep 17 00:00:00 2001 From: Vitalij Date: Tue, 17 Jun 2025 21:05:44 +0300 Subject: [PATCH 3/3] =?UTF-8?q?fix(home):=20=D0=9E=D0=BF=D1=82=D0=B8=D0=BC?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D1=8B=20=D0=BD=D0=B0=D0=B2=D0=B8=D0=B3=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=BE=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B1=D0=B0=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/screens/home/home_screen.dart | 45 +++++++++++++------------------ 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/lib/screens/home/home_screen.dart b/lib/screens/home/home_screen.dart index 56d2f56..13744de 100644 --- a/lib/screens/home/home_screen.dart +++ b/lib/screens/home/home_screen.dart @@ -21,31 +21,24 @@ class HomeScreen extends StatelessWidget { Widget build(BuildContext context) { logger.logBuild('build home screen'); - return SafeArea( - top: false, - child: AutoTabsScaffold( - routes: [ - SettingsRoute(), - StatistickRoute(), - CreateRoute(), - CollectionRoute(), - ], - bottomNavigationBuilder: (_, TabsRouter tabsRouter) { - return ColoredBox( - color: AppColors.bg, - child: SizedBox( - height: 73.h, - child: Stack( - alignment: Alignment.bottomCenter, - children: [ - _buildBackgroundBar(tabsRouter), - _buildCentralButton(), - ], - ), - ), - ); - }, - ), + return Stack( + children: [ + SafeArea( + top: false, + child: AutoTabsScaffold( + routes: [ + SettingsRoute(), + StatistickRoute(), + CreateRoute(), + CollectionRoute(), + ], + bottomNavigationBuilder: (_, TabsRouter tabsRouter) { + return _buildBackgroundBar(tabsRouter); + }, + ), + ), + _buildCentralButton(), + ], ); } @@ -89,7 +82,7 @@ class HomeScreen extends StatelessWidget { /// Построение центральной кнопки Widget _buildCentralButton() { return Align( - alignment: Alignment.topCenter, + alignment: Alignment(0, 0.91), child: GestureDetector( onTap: () { // Логика нажатия на центральную кнопку