From e00900db62bea9f3999544b64b3e9ee07df22d21 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 09:07:27 +0000 Subject: [PATCH 01/13] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20test/widget=5Ftest.dart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/widget_test.dart | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 test/widget_test.dart diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index da093caf..00000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:eatvio_app/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} From 0da839559ba6318c5f677c805a6bf2ee0e7ce969 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 09:07:39 +0000 Subject: [PATCH 02/13] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20test/widget=5Ftest.dart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/widget_test.dart | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 test/widget_test.dart diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index da093caf..00000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:eatvio_app/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} From 06846d593ad864846245af9798dc757fd8b16fb9 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 12:08:22 +0300 Subject: [PATCH 03/13] fix: remove widget test --- .../arm64-v8a/configure_fingerprint.bin | 24 +++++++-------- .../armeabi-v7a/configure_fingerprint.bin | 24 +++++++-------- .../4y1z256o/x86/configure_fingerprint.bin | 24 +++++++-------- .../4y1z256o/x86_64/configure_fingerprint.bin | 24 +++++++-------- test/widget_test.dart | 30 ------------------- 5 files changed, 48 insertions(+), 78 deletions(-) delete mode 100644 test/widget_test.dart diff --git a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin index 04e382a4..d15e1a80 100644 --- a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Loga _ ]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¤¤þñÚ2  �ë„ÖØ2^ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¸¢ËÇÛ2  �ë„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  ¤¤þñÚ2§ ‡ë„ÖØ2c +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  ¸¢ËÇÛ2§ ‡ë„ÖØ2c a -_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  ¤¤þñÚ2² ‰ë„ÖØ2P +_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  ¸¢ËÇÛ2² ‰ë„ÖØ2P N -L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  ¤¤þñÚ2œÃ çê„ÖØ2T +L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  ¸¢ËÇÛ2œÃ çê„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  ¤¤þñÚ2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  ¹¢ËÇÛ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  ¤¤þñÚ2 P ‰ë„ÖØ2Z +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  ¹¢ËÇÛ2 P ‰ë„ÖØ2Z X -V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  ¤¤þñÚ2^ +V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  ¹¢ËÇÛ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  ¤¤þñÚ2 d +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  ¹¢ËÇÛ2 d b -`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  ¤¤þñÚ2 +`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  ¹¢ËÇÛ2 ‚ ‰ë„ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  ¤¤þñÚ2  ( ‰ë„ÖØ2\ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  ¹¢ËÇÛ2  ( ‰ë„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  ¤¤þñÚ2  O ‰ë„ÖØ2T +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  ¹¢ËÇÛ2  O ‰ë„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¤¤þñÚ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¹¢ËÇÛ2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin index 997c9dcb..0e2e880d 100644 --- a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Logc a _/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ѤþñÚ2  ’ò„ÖØ2` +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ï¢ËÇÛ2  ’ò„ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  ѤþñÚ2« ”ò„ÖØ2e +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  Ï¢ËÇÛ2« ”ò„ÖØ2e c -a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  ѤþñÚ2¶ –ò„ÖØ2R +a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  Ï¢ËÇÛ2¶ –ò„ÖØ2R P -N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  ѤþñÚ2¨Ã þñ„ÖØ2V +N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  ТËÇÛ2¨Ã þñ„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  ѤþñÚ2[ +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  ТËÇÛ2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  ѤþñÚ2 P –ò„ÖØ2\ +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  ТËÇÛ2 P –ò„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  ѤþñÚ2` +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  ТËÇÛ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  ѤþñÚ2 f +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  ТËÇÛ2 f d -b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  ѤþñÚ2 +b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  ТËÇÛ2 Œ –ò„ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  ѤþñÚ2  ( –ò„ÖØ2^ +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  ТËÇÛ2  ( –ò„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  ѤþñÚ2  Q –ò„ÖØ2T +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  ТËÇÛ2  Q –ò„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ѤþñÚ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ТËÇÛ2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin index 328a1cc5..e7fbfd4a 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log[ Y W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ߤþñÚ2  Üû„ÖØ2X +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Þ¢ËÇÛ2  Üû„ÖØ2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  ߤþñÚ2› Ýû„ÖØ2] +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  Þ¢ËÇÛ2› Ýû„ÖØ2] [ -Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  ߤþñÚ2¦ Þû„ÖØ2J +Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  Þ¢ËÇÛ2¦ Þû„ÖØ2J H -F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  ߤþñÚ2øÂ Ïû„ÖØ2N +F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  Þ¢ËÇÛ2øÂ Ïû„ÖØ2N L -J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  ߤþñÚ2S +J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  Þ¢ËÇÛ2S Q -O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  ߤþñÚ2 P ßû„ÖØ2T +O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  Þ¢ËÇÛ2 P ßû„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  ߤþñÚ2X +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  Þ¢ËÇÛ2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  ߤþñÚ2 ^ +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  Þ¢ËÇÛ2 ^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  ߤþñÚ2 +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  Þ¢ËÇÛ2 ä Þû„ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  ߤþñÚ2  ( Þû„ÖØ2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  Þ¢ËÇÛ2  ( Þû„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  ߤþñÚ2  I ßû„ÖØ2T +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  Þ¢ËÇÛ2  I ßû„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ߤþñÚ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Þ¢ËÇÛ2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin index d02753d8..12972e70 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log^ \ Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  é¤þñÚ2  Î�…ÖØ2[ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ï¢ËÇÛ2  Î�…ÖØ2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  é¤þñÚ2¡ Ð�…ÖØ2` +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  ï¢ËÇÛ2¡ Ð�…ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  é¤þñÚ2¬ Ò�…ÖØ2M +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  ï¢ËÇÛ2¬ Ò�…ÖØ2M K -I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  é¤þñÚ2ŠÃ »�…ÖØ2Q +I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  ï¢ËÇÛ2ŠÃ »�…ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  é¤þñÚ2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  ï¢ËÇÛ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  é¤þñÚ2 P Ô�…ÖØ2W +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  ï¢ËÇÛ2 P Ô�…ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  é¤þñÚ2[ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  ï¢ËÇÛ2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  é¤þñÚ2 a +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  ï¢ËÇÛ2 a _ -]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  ê¤þñÚ2 +]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  ï¢ËÇÛ2 ó Ó�…ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  ê¤þñÚ2  ( Ó�…ÖØ2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  ï¢ËÇÛ2  ( Ó�…ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  ê¤þñÚ2  L Ó�…ÖØ2T +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  ï¢ËÇÛ2  L Ó�…ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ê¤þñÚ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ð¢ËÇÛ2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index da093caf..00000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:eatvio_app/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} From e082bbc3c996dac18fcacf2411c2818e2b72663d Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 13:28:40 +0300 Subject: [PATCH 04/13] fix: recipe loading --- .../arm64-v8a/configure_fingerprint.bin | 24 +++++++++---------- .../armeabi-v7a/configure_fingerprint.bin | 24 +++++++++---------- .../4y1z256o/x86/configure_fingerprint.bin | 24 +++++++++---------- .../4y1z256o/x86_64/configure_fingerprint.bin | 24 +++++++++---------- lib/features/feed/models/recipes_model.dart | 2 +- .../feed/models/recipes_model.freezed.dart | 11 +++++---- lib/features/feed/models/recipes_model.g.dart | 4 ++-- 7 files changed, 58 insertions(+), 55 deletions(-) diff --git a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin index d15e1a80..bbe195e3 100644 --- a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Loga _ ]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¸¢ËÇÛ2  �ë„ÖØ2^ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÃÚÆ½Ü2  �ë„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  ¸¢ËÇÛ2§ ‡ë„ÖØ2c +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  ÄÚÆ½Ü2§ ‡ë„ÖØ2c a -_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  ¸¢ËÇÛ2² ‰ë„ÖØ2P +_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  ÄÚÆ½Ü2² ‰ë„ÖØ2P N -L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  ¸¢ËÇÛ2œÃ çê„ÖØ2T +L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  ÄÚÆ½Ü2œÃ çê„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  ¹¢ËÇÛ2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  ÄÚÆ½Ü2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  ¹¢ËÇÛ2 P ‰ë„ÖØ2Z +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  ÄÚÆ½Ü2 P ‰ë„ÖØ2Z X -V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  ¹¢ËÇÛ2^ +V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  ÄÚÆ½Ü2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  ¹¢ËÇÛ2 d +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  ÄÚÆ½Ü2 d b -`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  ¹¢ËÇÛ2 +`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  ÄÚÆ½Ü2 ‚ ‰ë„ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  ¹¢ËÇÛ2  ( ‰ë„ÖØ2\ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  ÄÚÆ½Ü2  ( ‰ë„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  ¹¢ËÇÛ2  O ‰ë„ÖØ2T +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  ÄÚÆ½Ü2  O ‰ë„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¹¢ËÇÛ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÄÚÆ½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin index 0e2e880d..bd761631 100644 --- a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Logc a _/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ï¢ËÇÛ2  ’ò„ÖØ2` +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÙÚÆ½Ü2  ’ò„ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  Ï¢ËÇÛ2« ”ò„ÖØ2e +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  ÙÚÆ½Ü2« ”ò„ÖØ2e c -a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  Ï¢ËÇÛ2¶ –ò„ÖØ2R +a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  ÙÚÆ½Ü2¶ –ò„ÖØ2R P -N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  ТËÇÛ2¨Ã þñ„ÖØ2V +N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  ÙÚÆ½Ü2¨Ã þñ„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  ТËÇÛ2[ +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  ÙÚÆ½Ü2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  ТËÇÛ2 P –ò„ÖØ2\ +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  ÙÚÆ½Ü2 P –ò„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  ТËÇÛ2` +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  ÙÚÆ½Ü2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  ТËÇÛ2 f +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  ÙÚÆ½Ü2 f d -b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  ТËÇÛ2 +b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  ÙÚÆ½Ü2 Œ –ò„ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  ТËÇÛ2  ( –ò„ÖØ2^ +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  ÙÚÆ½Ü2  ( –ò„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  ТËÇÛ2  Q –ò„ÖØ2T +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  ÙÚÆ½Ü2  Q –ò„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ТËÇÛ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÙÚÆ½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin index e7fbfd4a..058ed88f 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log[ Y W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Þ¢ËÇÛ2  Üû„ÖØ2X +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  àÚÆ½Ü2  Üû„ÖØ2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  Þ¢ËÇÛ2› Ýû„ÖØ2] +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  àÚÆ½Ü2› Ýû„ÖØ2] [ -Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  Þ¢ËÇÛ2¦ Þû„ÖØ2J +Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  àÚÆ½Ü2¦ Þû„ÖØ2J H -F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  Þ¢ËÇÛ2øÂ Ïû„ÖØ2N +F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  àÚÆ½Ü2øÂ Ïû„ÖØ2N L -J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  Þ¢ËÇÛ2S +J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  àÚÆ½Ü2S Q -O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  Þ¢ËÇÛ2 P ßû„ÖØ2T +O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  àÚÆ½Ü2 P ßû„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  Þ¢ËÇÛ2X +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  àÚÆ½Ü2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  Þ¢ËÇÛ2 ^ +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  àÚÆ½Ü2 ^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  Þ¢ËÇÛ2 +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  àÚÆ½Ü2 ä Þû„ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  Þ¢ËÇÛ2  ( Þû„ÖØ2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  àÚÆ½Ü2  ( Þû„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  Þ¢ËÇÛ2  I ßû„ÖØ2T +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  àÚÆ½Ü2  I ßû„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Þ¢ËÇÛ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  áÚÆ½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin index 12972e70..316b54c7 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log^ \ Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ï¢ËÇÛ2  Î�…ÖØ2[ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  íÚÆ½Ü2  Î�…ÖØ2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  ï¢ËÇÛ2¡ Ð�…ÖØ2` +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  íÚÆ½Ü2¡ Ð�…ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  ï¢ËÇÛ2¬ Ò�…ÖØ2M +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  íÚÆ½Ü2¬ Ò�…ÖØ2M K -I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  ï¢ËÇÛ2ŠÃ »�…ÖØ2Q +I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  íÚÆ½Ü2ŠÃ »�…ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  ï¢ËÇÛ2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  íÚÆ½Ü2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  ï¢ËÇÛ2 P Ô�…ÖØ2W +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  íÚÆ½Ü2 P Ô�…ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  ï¢ËÇÛ2[ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  íÚÆ½Ü2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  ï¢ËÇÛ2 a +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  íÚÆ½Ü2 a _ -]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  ï¢ËÇÛ2 +]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  íÚÆ½Ü2 ó Ó�…ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  ï¢ËÇÛ2  ( Ó�…ÖØ2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  íÚÆ½Ü2  ( Ó�…ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  ï¢ËÇÛ2  L Ó�…ÖØ2T +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  íÚÆ½Ü2  L Ó�…ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ð¢ËÇÛ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  íÚÆ½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/lib/features/feed/models/recipes_model.dart b/lib/features/feed/models/recipes_model.dart index f32fc011..3a5b56ff 100644 --- a/lib/features/feed/models/recipes_model.dart +++ b/lib/features/feed/models/recipes_model.dart @@ -13,7 +13,7 @@ class Recipe with _$Recipe { @JsonKey(name: 'cooking_time') required int cookingTime, @JsonKey(name: 'active_time') required int activeCookingTime, required List? ingredients, - required String description, + @JsonKey(name: 'description_md') required String description, required List? steps, @JsonKey(name: 'video_url') required String? videoUrl, @JsonKey(name: 'created_at') required DateTime createdAt, diff --git a/lib/features/feed/models/recipes_model.freezed.dart b/lib/features/feed/models/recipes_model.freezed.dart index 21c0d2c1..3e062bab 100644 --- a/lib/features/feed/models/recipes_model.freezed.dart +++ b/lib/features/feed/models/recipes_model.freezed.dart @@ -29,6 +29,7 @@ mixin _$Recipe { @JsonKey(name: 'active_time') int get activeCookingTime => throw _privateConstructorUsedError; List? get ingredients => throw _privateConstructorUsedError; + @JsonKey(name: 'description_md') String get description => throw _privateConstructorUsedError; List? get steps => throw _privateConstructorUsedError; @JsonKey(name: 'video_url') @@ -75,7 +76,7 @@ abstract class $RecipeCopyWith<$Res> { @JsonKey(name: 'cooking_time') int cookingTime, @JsonKey(name: 'active_time') int activeCookingTime, List? ingredients, - String description, + @JsonKey(name: 'description_md') String description, List? steps, @JsonKey(name: 'video_url') String? videoUrl, @JsonKey(name: 'created_at') DateTime createdAt, @@ -270,7 +271,7 @@ abstract class _$$RecipesImplCopyWith<$Res> implements $RecipeCopyWith<$Res> { @JsonKey(name: 'cooking_time') int cookingTime, @JsonKey(name: 'active_time') int activeCookingTime, List? ingredients, - String description, + @JsonKey(name: 'description_md') String description, List? steps, @JsonKey(name: 'video_url') String? videoUrl, @JsonKey(name: 'created_at') DateTime createdAt, @@ -449,7 +450,7 @@ class _$RecipesImpl implements _Recipes { @JsonKey(name: 'cooking_time') required this.cookingTime, @JsonKey(name: 'active_time') required this.activeCookingTime, required final List? ingredients, - required this.description, + @JsonKey(name: 'description_md') required this.description, required final List? steps, @JsonKey(name: 'video_url') required this.videoUrl, @JsonKey(name: 'created_at') required this.createdAt, @@ -493,6 +494,7 @@ class _$RecipesImpl implements _Recipes { } @override + @JsonKey(name: 'description_md') final String description; final List? _steps; @override @@ -637,7 +639,7 @@ abstract class _Recipes implements Recipe { @JsonKey(name: 'cooking_time') required final int cookingTime, @JsonKey(name: 'active_time') required final int activeCookingTime, required final List? ingredients, - required final String description, + @JsonKey(name: 'description_md') required final String description, required final List? steps, @JsonKey(name: 'video_url') required final String? videoUrl, @JsonKey(name: 'created_at') required final DateTime createdAt, @@ -671,6 +673,7 @@ abstract class _Recipes implements Recipe { @override List? get ingredients; @override + @JsonKey(name: 'description_md') String get description; @override List? get steps; diff --git a/lib/features/feed/models/recipes_model.g.dart b/lib/features/feed/models/recipes_model.g.dart index 207de5f7..43a99cb9 100644 --- a/lib/features/feed/models/recipes_model.g.dart +++ b/lib/features/feed/models/recipes_model.g.dart @@ -17,7 +17,7 @@ _$RecipesImpl _$$RecipesImplFromJson(Map json) => (json['ingredients'] as List?) ?.map((e) => Ingredient.fromJson(e as Map)) .toList(), - description: json['description'] as String, + description: json['description_md'] as String, steps: (json['steps'] as List?) ?.map((e) => Step.fromJson(e as Map)) @@ -45,7 +45,7 @@ Map _$$RecipesImplToJson(_$RecipesImpl instance) => 'cooking_time': instance.cookingTime, 'active_time': instance.activeCookingTime, 'ingredients': instance.ingredients, - 'description': instance.description, + 'description_md': instance.description, 'steps': instance.steps, 'video_url': instance.videoUrl, 'created_at': instance.createdAt.toIso8601String(), From d84e3662c6349240aebba5bb165aa723dba3a712 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 13:31:12 +0300 Subject: [PATCH 05/13] fix: plans loading --- .../feed/models/plan_pagination_model.dart | 2 +- .../feed/models/plan_pagination_model.freezed.dart | 14 +++++++------- .../feed/models/plan_pagination_model.g.dart | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/features/feed/models/plan_pagination_model.dart b/lib/features/feed/models/plan_pagination_model.dart index 09c2129f..5af99db7 100644 --- a/lib/features/feed/models/plan_pagination_model.dart +++ b/lib/features/feed/models/plan_pagination_model.dart @@ -27,7 +27,7 @@ class PlanModel with _$PlanModel { @JsonKey(name: "duration") required int duration, @JsonKey(name: "state") required String state, @JsonKey(name: "type", fromJson: planTypeFromJson) required PlanType type, - @JsonKey(name: "details") required String details, + @JsonKey(name: "description_md") required String details, @JsonKey(name: "packets_count") required int packetsCount, @JsonKey(name: "packet1_options") PacketOptions? packet1Options, @JsonKey(name: "packet2_options") PacketOptions? packet2Options, diff --git a/lib/features/feed/models/plan_pagination_model.freezed.dart b/lib/features/feed/models/plan_pagination_model.freezed.dart index 94799f51..bcf2a193 100644 --- a/lib/features/feed/models/plan_pagination_model.freezed.dart +++ b/lib/features/feed/models/plan_pagination_model.freezed.dart @@ -287,7 +287,7 @@ mixin _$PlanModel { String get state => throw _privateConstructorUsedError; @JsonKey(name: "type", fromJson: planTypeFromJson) PlanType get type => throw _privateConstructorUsedError; - @JsonKey(name: "details") + @JsonKey(name: "description_md") String get details => throw _privateConstructorUsedError; @JsonKey(name: "packets_count") int get packetsCount => throw _privateConstructorUsedError; @@ -337,7 +337,7 @@ abstract class $PlanModelCopyWith<$Res> { @JsonKey(name: "duration") int duration, @JsonKey(name: "state") String state, @JsonKey(name: "type", fromJson: planTypeFromJson) PlanType type, - @JsonKey(name: "details") String details, + @JsonKey(name: "description_md") String details, @JsonKey(name: "packets_count") int packetsCount, @JsonKey(name: "packet1_options") PacketOptions? packet1Options, @JsonKey(name: "packet2_options") PacketOptions? packet2Options, @@ -582,7 +582,7 @@ abstract class _$$PlanModelImplCopyWith<$Res> @JsonKey(name: "duration") int duration, @JsonKey(name: "state") String state, @JsonKey(name: "type", fromJson: planTypeFromJson) PlanType type, - @JsonKey(name: "details") String details, + @JsonKey(name: "description_md") String details, @JsonKey(name: "packets_count") int packetsCount, @JsonKey(name: "packet1_options") PacketOptions? packet1Options, @JsonKey(name: "packet2_options") PacketOptions? packet2Options, @@ -762,7 +762,7 @@ class _$PlanModelImpl implements _PlanModel { @JsonKey(name: "duration") required this.duration, @JsonKey(name: "state") required this.state, @JsonKey(name: "type", fromJson: planTypeFromJson) required this.type, - @JsonKey(name: "details") required this.details, + @JsonKey(name: "description_md") required this.details, @JsonKey(name: "packets_count") required this.packetsCount, @JsonKey(name: "packet1_options") this.packet1Options, @JsonKey(name: "packet2_options") this.packet2Options, @@ -802,7 +802,7 @@ class _$PlanModelImpl implements _PlanModel { @JsonKey(name: "type", fromJson: planTypeFromJson) final PlanType type; @override - @JsonKey(name: "details") + @JsonKey(name: "description_md") final String details; @override @JsonKey(name: "packets_count") @@ -935,7 +935,7 @@ abstract class _PlanModel implements PlanModel { @JsonKey(name: "state") required final String state, @JsonKey(name: "type", fromJson: planTypeFromJson) required final PlanType type, - @JsonKey(name: "details") required final String details, + @JsonKey(name: "description_md") required final String details, @JsonKey(name: "packets_count") required final int packetsCount, @JsonKey(name: "packet1_options") final PacketOptions? packet1Options, @JsonKey(name: "packet2_options") final PacketOptions? packet2Options, @@ -977,7 +977,7 @@ abstract class _PlanModel implements PlanModel { @JsonKey(name: "type", fromJson: planTypeFromJson) PlanType get type; @override - @JsonKey(name: "details") + @JsonKey(name: "description_md") String get details; @override @JsonKey(name: "packets_count") diff --git a/lib/features/feed/models/plan_pagination_model.g.dart b/lib/features/feed/models/plan_pagination_model.g.dart index 5b2921d8..f9a2ccee 100644 --- a/lib/features/feed/models/plan_pagination_model.g.dart +++ b/lib/features/feed/models/plan_pagination_model.g.dart @@ -34,7 +34,7 @@ _$PlanModelImpl _$$PlanModelImplFromJson(Map json) => duration: (json['duration'] as num).toInt(), state: json['state'] as String, type: planTypeFromJson(json['type']), - details: json['details'] as String, + details: json['description_md'] as String, packetsCount: (json['packets_count'] as num).toInt(), packet1Options: json['packet1_options'] == null @@ -73,7 +73,7 @@ Map _$$PlanModelImplToJson(_$PlanModelImpl instance) => 'duration': instance.duration, 'state': instance.state, 'type': instance.type, - 'details': instance.details, + 'description_md': instance.details, 'packets_count': instance.packetsCount, 'packet1_options': instance.packet1Options, 'packet2_options': instance.packet2Options, From 595a5d1f9715b4301cde6108ed835476ce473f1a Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 13:34:46 +0300 Subject: [PATCH 06/13] fix: decimal value on glossary moderation --- ...glossary_moderation_request_modal_widget.dart | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/features/diary/presentation/widgets/glossary_moderation_request_modal_widget.dart b/lib/features/diary/presentation/widgets/glossary_moderation_request_modal_widget.dart index 23e9f00e..4f49747f 100644 --- a/lib/features/diary/presentation/widgets/glossary_moderation_request_modal_widget.dart +++ b/lib/features/diary/presentation/widgets/glossary_moderation_request_modal_widget.dart @@ -227,7 +227,7 @@ class _GlossaryModerationRequestModalWidgetState extends State Date: Mon, 24 Mar 2025 13:50:35 +0300 Subject: [PATCH 07/13] feat: comment field increase size --- .../arm64-v8a/configure_fingerprint.bin | 24 ++++---- .../armeabi-v7a/configure_fingerprint.bin | 24 ++++---- .../4y1z256o/x86/configure_fingerprint.bin | 24 ++++---- .../4y1z256o/x86_64/configure_fingerprint.bin | 24 ++++---- .../presentation/pages/blog_post_screen.dart | 58 +++++++++++++------ .../presentation/pages/about_diet_screen.dart | 39 +++++++------ .../presentation/pages/about_plan_screen.dart | 39 +++++++------ .../presentation/about_recipe_screen.dart | 52 ++++++++--------- 8 files changed, 151 insertions(+), 133 deletions(-) diff --git a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin index bbe195e3..0ff207aa 100644 --- a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Loga _ ]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÃÚÆ½Ü2  �ë„ÖØ2^ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ‹Ãú½Ü2  �ë„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  ÄÚÆ½Ü2§ ‡ë„ÖØ2c +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  ‹Ãú½Ü2§ ‡ë„ÖØ2c a -_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  ÄÚÆ½Ü2² ‰ë„ÖØ2P +_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  ‹Ãú½Ü2² ‰ë„ÖØ2P N -L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  ÄÚÆ½Ü2œÃ çê„ÖØ2T +L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  ŒÃú½Ü2œÃ çê„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  ÄÚÆ½Ü2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  ŒÃú½Ü2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  ÄÚÆ½Ü2 P ‰ë„ÖØ2Z +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  ŒÃú½Ü2 P ‰ë„ÖØ2Z X -V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  ÄÚÆ½Ü2^ +V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  ŒÃú½Ü2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  ÄÚÆ½Ü2 d +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  ŒÃú½Ü2 d b -`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  ÄÚÆ½Ü2 +`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  ŒÃú½Ü2 ‚ ‰ë„ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  ÄÚÆ½Ü2  ( ‰ë„ÖØ2\ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  ŒÃú½Ü2  ( ‰ë„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  ÄÚÆ½Ü2  O ‰ë„ÖØ2T +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  ŒÃú½Ü2  O ‰ë„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÄÚÆ½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ŒÃú½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin index bd761631..7f853cb6 100644 --- a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Logc a _/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÙÚÆ½Ü2  ’ò„ÖØ2` +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  åÃú½Ü2  ’ò„ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  ÙÚÆ½Ü2« ”ò„ÖØ2e +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  åÃú½Ü2« ”ò„ÖØ2e c -a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  ÙÚÆ½Ü2¶ –ò„ÖØ2R +a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  åÃú½Ü2¶ –ò„ÖØ2R P -N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  ÙÚÆ½Ü2¨Ã þñ„ÖØ2V +N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  åÃú½Ü2¨Ã þñ„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  ÙÚÆ½Ü2[ +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  åÃú½Ü2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  ÙÚÆ½Ü2 P –ò„ÖØ2\ +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  åÃú½Ü2 P –ò„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  ÙÚÆ½Ü2` +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  åÃú½Ü2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  ÙÚÆ½Ü2 f +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  åÃú½Ü2 f d -b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  ÙÚÆ½Ü2 +b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  åÃú½Ü2 Œ –ò„ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  ÙÚÆ½Ü2  ( –ò„ÖØ2^ +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  åÃú½Ü2  ( –ò„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  ÙÚÆ½Ü2  Q –ò„ÖØ2T +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  åÃú½Ü2  Q –ò„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÙÚÆ½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  åÃú½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin index 058ed88f..23292523 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log[ Y W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  àÚÆ½Ü2  Üû„ÖØ2X +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  öÃú½Ü2  Üû„ÖØ2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  àÚÆ½Ü2› Ýû„ÖØ2] +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  öÃú½Ü2› Ýû„ÖØ2] [ -Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  àÚÆ½Ü2¦ Þû„ÖØ2J +Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  öÃú½Ü2¦ Þû„ÖØ2J H -F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  àÚÆ½Ü2øÂ Ïû„ÖØ2N +F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  öÃú½Ü2øÂ Ïû„ÖØ2N L -J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  àÚÆ½Ü2S +J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  öÃú½Ü2S Q -O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  àÚÆ½Ü2 P ßû„ÖØ2T +O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  öÃú½Ü2 P ßû„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  àÚÆ½Ü2X +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  öÃú½Ü2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  àÚÆ½Ü2 ^ +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  öÃú½Ü2 ^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  àÚÆ½Ü2 +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  öÃú½Ü2 ä Þû„ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  àÚÆ½Ü2  ( Þû„ÖØ2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  öÃú½Ü2  ( Þû„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  àÚÆ½Ü2  I ßû„ÖØ2T +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  öÃú½Ü2  I ßû„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  áÚÆ½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ÷Ãú½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin index 316b54c7..3a01cb9a 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log^ \ Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  íÚÆ½Ü2  Î�…ÖØ2[ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ‰Äú½Ü2  Î�…ÖØ2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  íÚÆ½Ü2¡ Ð�…ÖØ2` +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  ‰Äú½Ü2¡ Ð�…ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  íÚÆ½Ü2¬ Ò�…ÖØ2M +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  ‰Äú½Ü2¬ Ò�…ÖØ2M K -I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  íÚÆ½Ü2ŠÃ »�…ÖØ2Q +I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  ‰Äú½Ü2ŠÃ »�…ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  íÚÆ½Ü2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  ‰Äú½Ü2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  íÚÆ½Ü2 P Ô�…ÖØ2W +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  ‰Äú½Ü2 P Ô�…ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  íÚÆ½Ü2[ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  ‰Äú½Ü2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  íÚÆ½Ü2 a +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  ‰Äú½Ü2 a _ -]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  íÚÆ½Ü2 +]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  ‰Äú½Ü2 ó Ó�…ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  íÚÆ½Ü2  ( Ó�…ÖØ2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  ‰Äú½Ü2  ( Ó�…ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  íÚÆ½Ü2  L Ó�…ÖØ2T +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  ‰Äú½Ü2  L Ó�…ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  íÚÆ½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ‰Äú½Ü2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/lib/features/blog_post/presentation/pages/blog_post_screen.dart b/lib/features/blog_post/presentation/pages/blog_post_screen.dart index 09d0d9f5..2f4fcf50 100644 --- a/lib/features/blog_post/presentation/pages/blog_post_screen.dart +++ b/lib/features/blog_post/presentation/pages/blog_post_screen.dart @@ -85,24 +85,46 @@ class _BlogPostScreenState extends State { if (replyId != null) SizedBox(width: 8), SizedBox( width: MediaQuery.of(context).size.width - (replyId == null ? 64 : 104), - child: TextFormField( - onChanged: (_) { - setState(() {}); - }, - controller: textEditingController, - maxLines: 5, - minLines: 1, - keyboardType: TextInputType.multiline, - style: TextStyle(fontSize: 16, fontWeight: FontWeight.w400, color: Colors.black, height: 1), - decoration: InputDecoration( - isDense: true, - contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), - hintText: 'Комментарий', - hintStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.w400, height: 1, color: Color(0xFFAEAEB2)), - filled: true, - border: OutlineInputBorder(borderRadius: BorderRadius.circular(16), borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1)), - enabledBorder: OutlineInputBorder(borderRadius: BorderRadius.circular(16), borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1)), - focusedBorder: OutlineInputBorder(borderRadius: BorderRadius.circular(16), borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1)), + child: ConstrainedBox( + constraints: BoxConstraints(minHeight: 52), + child: TextFormField( + onChanged: (_) { + setState(() {}); + }, + controller: textEditingController, + maxLines: 5, + minLines: 1, + keyboardType: TextInputType.multiline, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + color: Colors.black, + height: 1.2, + ), + decoration: InputDecoration( + isDense: false, // убираем true, чтобы padding учитывалÑ�Ñ� корректно + contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 16), // вертикальный паддинг увеличен + hintText: 'Комментарий', + hintStyle: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + height: 1.2, + color: Color(0xFFAEAEB2), + ), + filled: true, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(16), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(16), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(16), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), + ), + ), ), ), ), diff --git a/lib/features/diets/presentation/pages/about_diet_screen.dart b/lib/features/diets/presentation/pages/about_diet_screen.dart index 93668286..66412d1a 100644 --- a/lib/features/diets/presentation/pages/about_diet_screen.dart +++ b/lib/features/diets/presentation/pages/about_diet_screen.dart @@ -5,7 +5,6 @@ import 'package:eatvio_app/core/const.dart'; import 'package:eatvio_app/core/enums/complained_content.dart'; import 'package:eatvio_app/core/enums/product_type.dart'; import 'package:eatvio_app/core/utils/localization_utils.dart'; -import 'package:eatvio_app/core/utils/string_extentions.dart'; import 'package:eatvio_app/core/widgets/bookmark_button.dart'; import 'package:eatvio_app/core/widgets/custom_divider.dart'; import 'package:eatvio_app/core/widgets/data_error_widget.dart'; @@ -219,7 +218,8 @@ class _AboutDietScreenState extends State { ), if (replyId != null) SizedBox(width: 8), Expanded( - child: SizedBox( + child: ConstrainedBox( + constraints: BoxConstraints(minHeight: 52), child: TextFormField( onChanged: (_) { setState(() {}); @@ -228,33 +228,34 @@ class _AboutDietScreenState extends State { maxLines: 5, minLines: 1, keyboardType: TextInputType.multiline, - style: TextStyles.textMMedium.copyWith(color: appTheme.black), + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + color: Colors.black, + height: 1.2, + ), decoration: InputDecoration( - isDense: true, - contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), - hintText: s.comment.capitalize(), - hintStyle: TextStyles.textMMedium.copyWith(color: appTheme.lightGray600), + isDense: false, // убираем true, чтобы padding учитывалÑ�Ñ� корректно + contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 16), // вертикальный паддинг увеличен + hintText: 'Комментарий', + hintStyle: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + height: 1.2, + color: Color(0xFFAEAEB2), + ), filled: true, border: OutlineInputBorder( borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), ), ), ), diff --git a/lib/features/plans/presentation/pages/about_plan_screen.dart b/lib/features/plans/presentation/pages/about_plan_screen.dart index c34985a1..b57c4312 100644 --- a/lib/features/plans/presentation/pages/about_plan_screen.dart +++ b/lib/features/plans/presentation/pages/about_plan_screen.dart @@ -5,7 +5,6 @@ import 'package:eatvio_app/core/const.dart'; import 'package:eatvio_app/core/enums/complained_content.dart'; import 'package:eatvio_app/core/enums/product_type.dart'; import 'package:eatvio_app/core/utils/localization_utils.dart'; -import 'package:eatvio_app/core/utils/string_extentions.dart'; import 'package:eatvio_app/core/widgets/bookmark_button.dart'; import 'package:eatvio_app/core/widgets/data_error_widget.dart'; import 'package:eatvio_app/core/widgets/info_row.dart'; @@ -289,7 +288,8 @@ class _AboutPlanScreenState extends State { ), if (replyId != null) SizedBox(width: 8), Expanded( - child: SizedBox( + child: ConstrainedBox( + constraints: BoxConstraints(minHeight: 52), child: TextFormField( onChanged: (_) { setState(() {}); @@ -298,33 +298,34 @@ class _AboutPlanScreenState extends State { maxLines: 5, minLines: 1, keyboardType: TextInputType.multiline, - style: TextStyles.textMMedium.copyWith(color: appTheme.black), + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + color: Colors.black, + height: 1.2, + ), decoration: InputDecoration( - isDense: true, - contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), - hintText: s.comment.capitalize(), - hintStyle: TextStyles.textMMedium.copyWith(color: appTheme.lightGray600), + isDense: false, // убираем true, чтобы padding учитывалÑ�Ñ� корректно + contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 16), // вертикальный паддинг увеличен + hintText: 'Комментарий', + hintStyle: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + height: 1.2, + color: Color(0xFFAEAEB2), + ), filled: true, border: OutlineInputBorder( borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), ), ), ), diff --git a/lib/features/recipe/presentation/about_recipe_screen.dart b/lib/features/recipe/presentation/about_recipe_screen.dart index 029b9c0f..6808d073 100644 --- a/lib/features/recipe/presentation/about_recipe_screen.dart +++ b/lib/features/recipe/presentation/about_recipe_screen.dart @@ -6,7 +6,6 @@ import 'package:eatvio_app/core/const.dart'; import 'package:eatvio_app/core/enums/complained_content.dart'; import 'package:eatvio_app/core/enums/product_type.dart'; import 'package:eatvio_app/core/utils/localization_utils.dart'; -import 'package:eatvio_app/core/utils/string_extentions.dart'; import 'package:eatvio_app/core/utils/toasts.dart'; import 'package:eatvio_app/core/widgets/bookmark_button.dart'; import 'package:eatvio_app/core/widgets/data_error_widget.dart'; @@ -149,7 +148,8 @@ class _AboutRecipeScreenState extends State { ), if (replyId != null) SizedBox(width: 8), Expanded( - child: SizedBox( + child: ConstrainedBox( + constraints: BoxConstraints(minHeight: 52), child: TextFormField( onChanged: (_) { setState(() {}); @@ -158,39 +158,40 @@ class _AboutRecipeScreenState extends State { maxLines: 5, minLines: 1, keyboardType: TextInputType.multiline, - style: TextStyles.textMMedium.copyWith(color: appTheme.black), + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + color: Colors.black, + height: 1.2, + ), decoration: InputDecoration( - isDense: true, - contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), - hintText: s.comment.capitalize(), - hintStyle: TextStyles.textMMedium.copyWith(color: appTheme.lightGray600), + isDense: false, // убираем true, чтобы padding учитывалÑ�Ñ� корректно + contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 16), // вертикальный паддинг увеличен + hintText: 'Комментарий', + hintStyle: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + height: 1.2, + color: Color(0xFFAEAEB2), + ), filled: true, border: OutlineInputBorder( borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), + borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1), ), ), ), ), ), - SizedBox(width: 8), + const SizedBox(width: 8), GestureDetector( onTap: () { if (textEditingController.text.length > 2) { @@ -212,17 +213,10 @@ class _AboutRecipeScreenState extends State { } }, child: Container( - decoration: BoxDecoration( - color: textEditingController.text.length > 2 ? appTheme.blueA400 : appTheme.gray50, - shape: BoxShape.circle, - ), + decoration: BoxDecoration(color: textEditingController.text.length > 2 ? appTheme.blueA400 : Colors.grey, shape: BoxShape.circle), height: 32, width: 32, - child: Icon( - Icons.send_rounded, - size: 18, - color: textEditingController.text.length > 2 ? appTheme.whiteA700 : appTheme.black, - ), + child: Icon(Icons.send_rounded, size: 18, color: Colors.white), ), ), ], From e476eabcde88aab2e6badf68f5a5e6a7be359224 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 13:53:19 +0300 Subject: [PATCH 08/13] feat: automatic capitalization --- lib/core/widgets/custom_search_bar.dart | 1 + lib/core/widgets/custom_text_form_field.dart | 1 + lib/features/blog_post/presentation/pages/blog_post_screen.dart | 1 + lib/features/chat/presentation/pages/chat_screen.dart | 1 + .../chat/presentation/widgets/chat_search_bar_widget.dart | 1 + lib/features/create_diet/presentation/diet_preview_screen.dart | 1 + lib/features/diets/presentation/pages/about_diet_screen.dart | 1 + lib/features/plans/presentation/pages/about_plan_screen.dart | 1 + lib/features/recipe/presentation/about_recipe_screen.dart | 1 + 9 files changed, 9 insertions(+) diff --git a/lib/core/widgets/custom_search_bar.dart b/lib/core/widgets/custom_search_bar.dart index 94b3c5c4..dac1e8d7 100644 --- a/lib/core/widgets/custom_search_bar.dart +++ b/lib/core/widgets/custom_search_bar.dart @@ -16,6 +16,7 @@ class CustomSearchBar extends StatelessWidget { height: 40, width: width ?? MediaQuery.of(context).size.width - 84, child: TextFormField( + textCapitalization: TextCapitalization.sentences, controller: searchController, autofocus: false, style: TextStyle( diff --git a/lib/core/widgets/custom_text_form_field.dart b/lib/core/widgets/custom_text_form_field.dart index 490255db..1cd38c0a 100644 --- a/lib/core/widgets/custom_text_form_field.dart +++ b/lib/core/widgets/custom_text_form_field.dart @@ -107,6 +107,7 @@ class CustomTextFormField extends StatelessWidget { maxLines: maxLines, initialValue: initialValue, cursorColor: appTheme.blueA400, + textCapitalization: TextCapitalization.sentences, decoration: InputDecoration( counter: counter, suffixText: suffixText, diff --git a/lib/features/blog_post/presentation/pages/blog_post_screen.dart b/lib/features/blog_post/presentation/pages/blog_post_screen.dart index 2f4fcf50..e63da667 100644 --- a/lib/features/blog_post/presentation/pages/blog_post_screen.dart +++ b/lib/features/blog_post/presentation/pages/blog_post_screen.dart @@ -88,6 +88,7 @@ class _BlogPostScreenState extends State { child: ConstrainedBox( constraints: BoxConstraints(minHeight: 52), child: TextFormField( + textCapitalization: TextCapitalization.sentences, onChanged: (_) { setState(() {}); }, diff --git a/lib/features/chat/presentation/pages/chat_screen.dart b/lib/features/chat/presentation/pages/chat_screen.dart index 5d76bce4..d7cb004e 100644 --- a/lib/features/chat/presentation/pages/chat_screen.dart +++ b/lib/features/chat/presentation/pages/chat_screen.dart @@ -336,6 +336,7 @@ class _ChatScreenState extends State { height: 40, child: TextFormField( expands: true, + textCapitalization: TextCapitalization.sentences, controller: textEditingController, maxLines: null, minLines: null, diff --git a/lib/features/chat/presentation/widgets/chat_search_bar_widget.dart b/lib/features/chat/presentation/widgets/chat_search_bar_widget.dart index 90db1fca..2750d2c5 100644 --- a/lib/features/chat/presentation/widgets/chat_search_bar_widget.dart +++ b/lib/features/chat/presentation/widgets/chat_search_bar_widget.dart @@ -81,6 +81,7 @@ class ChatSearchBarWidget extends StatelessWidget { searchViewWidget(BuildContext context) => SizedBox( width: width ?? MediaQuery.of(context).size.width, child: TextFormField( + textCapitalization: TextCapitalization.sentences, controller: controller, focusNode: focusNode, onTapOutside: (event) => onTapOutside(), diff --git a/lib/features/create_diet/presentation/diet_preview_screen.dart b/lib/features/create_diet/presentation/diet_preview_screen.dart index 066ac06e..8ed2cbf1 100644 --- a/lib/features/create_diet/presentation/diet_preview_screen.dart +++ b/lib/features/create_diet/presentation/diet_preview_screen.dart @@ -116,6 +116,7 @@ class _DietPreviewScreenState extends State { Expanded( child: SizedBox( child: TextFormField( + textCapitalization: TextCapitalization.sentences, onChanged: (_) { setState(() {}); }, diff --git a/lib/features/diets/presentation/pages/about_diet_screen.dart b/lib/features/diets/presentation/pages/about_diet_screen.dart index 66412d1a..c5953c36 100644 --- a/lib/features/diets/presentation/pages/about_diet_screen.dart +++ b/lib/features/diets/presentation/pages/about_diet_screen.dart @@ -221,6 +221,7 @@ class _AboutDietScreenState extends State { child: ConstrainedBox( constraints: BoxConstraints(minHeight: 52), child: TextFormField( + textCapitalization: TextCapitalization.sentences, onChanged: (_) { setState(() {}); }, diff --git a/lib/features/plans/presentation/pages/about_plan_screen.dart b/lib/features/plans/presentation/pages/about_plan_screen.dart index b57c4312..4ec3a327 100644 --- a/lib/features/plans/presentation/pages/about_plan_screen.dart +++ b/lib/features/plans/presentation/pages/about_plan_screen.dart @@ -291,6 +291,7 @@ class _AboutPlanScreenState extends State { child: ConstrainedBox( constraints: BoxConstraints(minHeight: 52), child: TextFormField( + textCapitalization: TextCapitalization.sentences, onChanged: (_) { setState(() {}); }, diff --git a/lib/features/recipe/presentation/about_recipe_screen.dart b/lib/features/recipe/presentation/about_recipe_screen.dart index 6808d073..f2a15edd 100644 --- a/lib/features/recipe/presentation/about_recipe_screen.dart +++ b/lib/features/recipe/presentation/about_recipe_screen.dart @@ -151,6 +151,7 @@ class _AboutRecipeScreenState extends State { child: ConstrainedBox( constraints: BoxConstraints(minHeight: 52), child: TextFormField( + textCapitalization: TextCapitalization.sentences, onChanged: (_) { setState(() {}); }, From 37f7b33ac41ee53192dda561c5fe50b229eefbe8 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 13:58:01 +0300 Subject: [PATCH 09/13] feat: from chat to profile --- .../chat/presentation/pages/chat_screen.dart | 102 ++++++++++-------- 1 file changed, 58 insertions(+), 44 deletions(-) diff --git a/lib/features/chat/presentation/pages/chat_screen.dart b/lib/features/chat/presentation/pages/chat_screen.dart index d7cb004e..014068e4 100644 --- a/lib/features/chat/presentation/pages/chat_screen.dart +++ b/lib/features/chat/presentation/pages/chat_screen.dart @@ -14,6 +14,7 @@ import 'package:eatvio_app/core/locator_service.dart'; import 'package:eatvio_app/core/theme/custom_text_style.dart'; import 'package:eatvio_app/core/theme/theme_helper.dart'; import 'package:eatvio_app/features/chat/presentation/widgets/order_card.dart'; +import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; import 'package:eatvio_app/features/plans/enums/chosen_plan_state_enum.dart'; import 'package:eatvio_app/features/user_details/presentation/user_details_screen.dart'; import 'package:eatvio_app/generated/l10n.dart'; @@ -96,55 +97,68 @@ class _ChatScreenState extends State { titleSpacing: 0, backgroundColor: appTheme.gray100, centerTitle: false, - title: Row( - children: [ - if (state.chatRoom.users.receiver.profilePhotoUrl != null) - CircleAvatar( - radius: 20, - foregroundImage: NetworkImage(state.chatRoom.users.receiver.profilePhotoUrl!), + title: GestureDetector( + onTap: () { + GoRouter.of(context).pushNamed( + 'profileScreen', + extra: Author( + authorSlug: state.chatRoom.users.receiver.slug, + authorName: state.chatRoom.users.receiver.name, + authorProfileIcon: state.chatRoom.users.receiver.profilePhotoUrl ?? '', + authorIsMe: false, ), - if (state.chatRoom.users.receiver.profilePhotoUrl == null) - Container( - width: 40, - height: 40, - alignment: Alignment.center, - decoration: BoxDecoration( - color: Color(0xFFEBF4FF), - shape: BoxShape.circle, + ); + }, + child: Row( + children: [ + if (state.chatRoom.users.receiver.profilePhotoUrl != null) + CircleAvatar( + radius: 20, + foregroundImage: NetworkImage(state.chatRoom.users.receiver.profilePhotoUrl!), ), - child: Text( - state.chatRoom.users.receiver.name.split(' ').first[0] + state.chatRoom.users.receiver.name.split(' ')[1][0], - style: TextStyle( - color: Color(0xFF7F9CF5), - fontWeight: FontWeight.w400, - fontSize: 20, + if (state.chatRoom.users.receiver.profilePhotoUrl == null) + Container( + width: 40, + height: 40, + alignment: Alignment.center, + decoration: BoxDecoration( + color: Color(0xFFEBF4FF), + shape: BoxShape.circle, + ), + child: Text( + state.chatRoom.users.receiver.name.split(' ').first[0] + state.chatRoom.users.receiver.name.split(' ')[1][0], + style: TextStyle( + color: Color(0xFF7F9CF5), + fontWeight: FontWeight.w400, + fontSize: 20, + ), ), ), + SizedBox(width: 16), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + state.chatRoom.users.receiver.name, + style: CustomTextStyles.titleSmallBold.copyWith( + color: PrimaryColors().black, + ), + ), + AnimatedCrossFade( + firstChild: Text( + 'Печатает...', + style: CustomTextStyles.bodySmallMulishPrimary, + ), + firstCurve: Curves.easeIn, + secondCurve: Curves.easeOut, + secondChild: const SizedBox.shrink(), + crossFadeState: state.isTyping ? CrossFadeState.showFirst : CrossFadeState.showSecond, + duration: Duration(milliseconds: 150), + ), + ], ), - SizedBox(width: 16), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - state.chatRoom.users.receiver.name, - style: CustomTextStyles.titleSmallBold.copyWith( - color: PrimaryColors().black, - ), - ), - AnimatedCrossFade( - firstChild: Text( - 'Печатает...', - style: CustomTextStyles.bodySmallMulishPrimary, - ), - firstCurve: Curves.easeIn, - secondCurve: Curves.easeOut, - secondChild: const SizedBox.shrink(), - crossFadeState: state.isTyping ? CrossFadeState.showFirst : CrossFadeState.showSecond, - duration: Duration(milliseconds: 150), - ), - ], - ), - ], + ], + ), ), ), body: SafeArea( From 35ac11e019ea138ec2cd86df88518e9651659a5a Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 14:04:28 +0300 Subject: [PATCH 10/13] feat: from blog post to profile --- .../widgets/blog_post_widget.dart | 76 ++++++++++++------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/lib/features/feed/presentation/widgets/blog_post_widget.dart b/lib/features/feed/presentation/widgets/blog_post_widget.dart index 3e066448..915b3fa0 100644 --- a/lib/features/feed/presentation/widgets/blog_post_widget.dart +++ b/lib/features/feed/presentation/widgets/blog_post_widget.dart @@ -4,6 +4,7 @@ import 'package:eatvio_app/core/const.dart'; import 'package:eatvio_app/core/utils/date_time_utils.dart'; import 'package:eatvio_app/core/widgets/feed_icon_button.dart'; import 'package:eatvio_app/features/chat/presentation/pages/photo_view_screen.dart'; +import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; import 'package:eatvio_app/features/feed/presentation/bloc/feed_cubit/feed_cubit.dart'; import 'package:eatvio_app/core/theme/theme_helper.dart'; import 'package:eatvio_app/features/feed/presentation/bloc/feed_cubit/feed_state.dart'; @@ -58,37 +59,54 @@ class _BlogPostWidgetState extends State { padding: const EdgeInsets.symmetric(horizontal: 12), child: Row( children: [ - CircleAvatar( - radius: 20, - backgroundColor: Colors.black12, - foregroundImage: NetworkImage( - state.feedBlogPostList[widget.index].author.authorProfileIcon, + GestureDetector( + onTap: () { + GoRouter.of(context).pushNamed( + 'profileScreen', + extra: Author( + authorSlug: state.feedBlogPostList[widget.index].author.authorSlug, + authorName: state.feedBlogPostList[widget.index].author.authorName, + authorProfileIcon: state.feedBlogPostList[widget.index].author.authorProfileIcon, + authorIsMe: state.feedBlogPostList[widget.index].author.authorIsMe, + ), + ); + }, + child: Row( + children: [ + CircleAvatar( + radius: 20, + backgroundColor: Colors.black12, + foregroundImage: NetworkImage( + state.feedBlogPostList[widget.index].author.authorProfileIcon, + ), + ), + SizedBox(width: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + state.feedBlogPostList[widget.index].author.authorName, + style: TextStyle( + height: 1, + color: Colors.black87, + fontWeight: FontWeight.w500, + fontSize: 16, + ), + ), + const SizedBox(height: 4), + Text( + '${calculateDifference(state.feedBlogPostList[widget.index].createdAt)} в ${state.feedBlogPostList[widget.index].createdAt.hour.toString().padLeft(2, '0')}:${state.feedBlogPostList[widget.index].createdAt.minute.toString().padLeft(2, '0')}', + style: TextStyle( + height: 1, + color: Colors.black45, + fontSize: 14, + ), + ), + ], + ), + ], ), ), - SizedBox(width: 8), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - state.feedBlogPostList[widget.index].author.authorName, - style: TextStyle( - height: 1, - color: Colors.black87, - fontWeight: FontWeight.w500, - fontSize: 16, - ), - ), - const SizedBox(height: 4), - Text( - '${calculateDifference(state.feedBlogPostList[widget.index].createdAt)} в ${state.feedBlogPostList[widget.index].createdAt.hour.toString().padLeft(2, '0')}:${state.feedBlogPostList[widget.index].createdAt.minute.toString().padLeft(2, '0')}', - style: TextStyle( - height: 1, - color: Colors.black45, - fontSize: 14, - ), - ), - ], - ), const Spacer(), if (!(state.feedBlogPostList[widget.index].author.isEntitySubscribedByMe ?? false) && !state.feedBlogPostList[widget.index].author.authorIsMe) From fcdc57493d7a40c733609209b93abf19a1b12eae Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 14:07:52 +0300 Subject: [PATCH 11/13] feat: from plan to profile --- .../presentation/widgets/plan_widget.dart | 96 +++++++++++-------- 1 file changed, 55 insertions(+), 41 deletions(-) diff --git a/lib/features/feed/presentation/widgets/plan_widget.dart b/lib/features/feed/presentation/widgets/plan_widget.dart index 5d3f5bda..12ab8ec7 100644 --- a/lib/features/feed/presentation/widgets/plan_widget.dart +++ b/lib/features/feed/presentation/widgets/plan_widget.dart @@ -5,6 +5,7 @@ import 'package:eatvio_app/core/widgets/bookmark_button.dart'; import 'package:eatvio_app/core/widgets/info_row.dart'; import 'package:eatvio_app/core/widgets/feed_icon_button.dart'; import 'package:eatvio_app/features/diets/presentation/widgets/info_bouble.dart'; +import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart'; import 'package:eatvio_app/core/theme/custom_text_style.dart'; import 'package:eatvio_app/core/theme/theme_helper.dart'; @@ -127,50 +128,63 @@ class _PlanWidgetState extends State { ], ), SizedBox(height: 16), - Padding( - padding: const EdgeInsets.only(left: 16.0), - child: ListTile( - contentPadding: EdgeInsets.zero, - leading: Container( - width: 46, - height: 46, - decoration: BoxDecoration( - shape: BoxShape.circle, - image: DecorationImage( - image: NetworkImage(widget.plan.author.authorProfileIcon), - fit: BoxFit.cover, + GestureDetector( + onTap: () { + GoRouter.of(context).pushNamed( + 'profileScreen', + extra: Author( + authorSlug: widget.plan.author.authorSlug, + authorName: widget.plan.author.authorName, + authorProfileIcon: widget.plan.author.authorProfileIcon, + authorIsMe: widget.plan.author.authorIsMe, + ), + ); + }, + child: Padding( + padding: const EdgeInsets.only(left: 16.0), + child: ListTile( + contentPadding: EdgeInsets.zero, + leading: Container( + width: 46, + height: 46, + decoration: BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + image: NetworkImage(widget.plan.author.authorProfileIcon), + fit: BoxFit.cover, + ), ), ), - ), - subtitle: Row( - children: [ - InfoBouble( - radius: 12, - backgroundColor: appTheme.gray50, - padding: EdgeInsets.symmetric(vertical: 4, horizontal: 10), - children: [ - Text( - '${widget.plan.author.authorPlaceInRating}-й в рейтинге', - style: TextStyles.textXSSemibold.copyWith( - color: appTheme.blueA400, + subtitle: Row( + children: [ + InfoBouble( + radius: 12, + backgroundColor: appTheme.gray50, + padding: EdgeInsets.symmetric(vertical: 4, horizontal: 10), + children: [ + Text( + '${widget.plan.author.authorPlaceInRating}-й в рейтинге', + style: TextStyles.textXSSemibold.copyWith( + color: appTheme.blueA400, + ), ), - ), - ], - ), - Spacer(), - Text( - '${widget.plan.packetsCount == 1 ? widget.plan.packet1Options?.price : '${s.from} ${widget.plan.minPriceOfOptions.toStringAsFixed(0)}'}₽', - style: TextStyles.headingXLSemibold.copyWith(color: appTheme.greenA700), - ), - SizedBox(width: 16), - ], - ), - title: Padding( - padding: const EdgeInsets.only(bottom: 4.0), - child: Text( - widget.plan.author.authorName, - style: TextStyles.textSSemibold.copyWith( - color: appTheme.black, + ], + ), + Spacer(), + Text( + '${widget.plan.packetsCount == 1 ? widget.plan.packet1Options?.price : '${s.from} ${widget.plan.minPriceOfOptions.toStringAsFixed(0)}'}₽', + style: TextStyles.headingXLSemibold.copyWith(color: appTheme.greenA700), + ), + SizedBox(width: 16), + ], + ), + title: Padding( + padding: const EdgeInsets.only(bottom: 4.0), + child: Text( + widget.plan.author.authorName, + style: TextStyles.textSSemibold.copyWith( + color: appTheme.black, + ), ), ), ), From a871dd8951fef4f111955d8e2b595955d0c515cc Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 17:37:47 +0300 Subject: [PATCH 12/13] feat(diary): wakeup, retire, mood, comment --- analysis_options.yaml | 6 +- assets/icons/mood_1.svg | 8 + assets/icons/mood_2.svg | 6 + assets/icons/retire.svg | 10 + assets/icons/wakeup.svg | 10 + lib/core/widgets/custom_text_form_field.dart | 44 ++-- .../diary/models/finish_diary_day_model.dart | 9 +- .../finish_diary_day_model.freezed.dart | 56 ++++- .../models/finish_diary_day_model.g.dart | 7 +- .../diary/presentation/bloc/diary_cubit.dart | 135 +++-------- .../presentation/pages/diary_screen.dart | 8 +- .../comment_for_consultant_widget.dart | 44 ++++ .../widgets/finish_day_button_widget.dart | 23 +- .../presentation/widgets/meal_widget.dart | 3 + .../widgets/mood_rating_widget.dart | 199 +++++++++++++++ .../widgets/satiety_rating_widget.dart | 6 +- .../widgets/wakeup_and_retire_widget.dart | 229 ++++++++++++++++++ .../diary/repositories/diary_repository.dart | 46 ++++ .../diary/services/diary_service.dart | 21 +- .../diary/services/diary_service.g.dart | 61 +++++ pubspec.yaml | 1 + 21 files changed, 767 insertions(+), 165 deletions(-) create mode 100644 assets/icons/mood_1.svg create mode 100644 assets/icons/mood_2.svg create mode 100644 assets/icons/retire.svg create mode 100644 assets/icons/wakeup.svg create mode 100644 lib/features/diary/presentation/widgets/comment_for_consultant_widget.dart create mode 100644 lib/features/diary/presentation/widgets/mood_rating_widget.dart create mode 100644 lib/features/diary/presentation/widgets/wakeup_and_retire_widget.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index 7db716b4..fe64289f 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,6 +1,10 @@ +include: package:flutter_lints/flutter.yaml + linter: rules: - - require_trailing_commas + +formatter: + page_width: 80 analyzer: exclude: diff --git a/assets/icons/mood_1.svg b/assets/icons/mood_1.svg new file mode 100644 index 00000000..e3f93b4f --- /dev/null +++ b/assets/icons/mood_1.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/icons/mood_2.svg b/assets/icons/mood_2.svg new file mode 100644 index 00000000..48bcdb0f --- /dev/null +++ b/assets/icons/mood_2.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/icons/retire.svg b/assets/icons/retire.svg new file mode 100644 index 00000000..bde7d06a --- /dev/null +++ b/assets/icons/retire.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/icons/wakeup.svg b/assets/icons/wakeup.svg new file mode 100644 index 00000000..a0bd91c0 --- /dev/null +++ b/assets/icons/wakeup.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/lib/core/widgets/custom_text_form_field.dart b/lib/core/widgets/custom_text_form_field.dart index 1cd38c0a..c58dd23e 100644 --- a/lib/core/widgets/custom_text_form_field.dart +++ b/lib/core/widgets/custom_text_form_field.dart @@ -80,8 +80,10 @@ class CustomTextFormField extends StatelessWidget { final TextAlignVertical? textAlignVertical; final bool hasError; final bool enabled; + // final TextAlign final bool readOnly; + @override Widget build(BuildContext context) { return Align( @@ -97,11 +99,7 @@ class CustomTextFormField extends StatelessWidget { controller: controller, focusNode: focusNode ?? null, autofocus: autofocus, - style: TextStyle( - fontSize: 16, - color: Colors.black, - fontWeight: FontWeight.w500, - ), + style: TextStyle(fontSize: 16, color: Colors.black, fontWeight: FontWeight.w500), obscureText: obscureText!, textInputAction: textInputAction, maxLines: maxLines, @@ -112,40 +110,26 @@ class CustomTextFormField extends StatelessWidget { counter: counter, suffixText: suffixText, hintText: hintText ?? "", - hintStyle: TextStyle( - fontSize: 16, - color: Colors.grey.shade400, - fontWeight: FontWeight.w500, - ), + hintStyle: hintStyle ?? TextStyle(fontSize: 16, color: Color(0xFF323F4B).withAlpha((255 / 2).toInt()), fontWeight: FontWeight.w500), prefixIcon: prefix, prefixIconConstraints: prefixConstraints, suffixIcon: suffix, floatingLabelBehavior: FloatingLabelBehavior.always, - suffixStyle: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w500, - color: Color(0xFF323F4B), - ), + suffixStyle: textStyle ?? TextStyle(fontSize: 16, fontWeight: FontWeight.w500, color: Color(0xFF323F4B)), suffixIconConstraints: suffixConstraints, isDense: false, contentPadding: EdgeInsets.symmetric(vertical: 16, horizontal: 12), fillColor: Color(0xFFF6F6F6), filled: true, - border: borderDecoration ?? - OutlineInputBorder( - borderRadius: BorderRadius.circular(20), - borderSide: hasError ? BorderSide(color: appTheme.red, width: 1) : BorderSide.none, - ), - enabledBorder: borderDecoration ?? - OutlineInputBorder( - borderRadius: BorderRadius.circular(20), - borderSide: hasError ? BorderSide(color: appTheme.red, width: 1) : BorderSide.none, - ), - focusedBorder: borderDecoration ?? - OutlineInputBorder( - borderRadius: BorderRadius.circular(20), - borderSide: hasError ? BorderSide(color: appTheme.red, width: 1) : BorderSide.none, - ), + border: + borderDecoration ?? + OutlineInputBorder(borderRadius: BorderRadius.circular(20), borderSide: hasError ? BorderSide(color: appTheme.red, width: 1) : BorderSide.none), + enabledBorder: + borderDecoration ?? + OutlineInputBorder(borderRadius: BorderRadius.circular(20), borderSide: hasError ? BorderSide(color: appTheme.red, width: 1) : BorderSide.none), + focusedBorder: + borderDecoration ?? + OutlineInputBorder(borderRadius: BorderRadius.circular(20), borderSide: hasError ? BorderSide(color: appTheme.red, width: 1) : BorderSide.none), ), keyboardType: keyboardType, validator: validator, diff --git a/lib/features/diary/models/finish_diary_day_model.dart b/lib/features/diary/models/finish_diary_day_model.dart index d1522273..8e7dfa34 100644 --- a/lib/features/diary/models/finish_diary_day_model.dart +++ b/lib/features/diary/models/finish_diary_day_model.dart @@ -4,12 +4,9 @@ part 'finish_diary_day_model.freezed.dart'; part 'finish_diary_day_model.g.dart'; -@freezed +@Freezed() class FinishDiaryDayModel with _$FinishDiaryDayModel { - const factory FinishDiaryDayModel({ - required String wakeUp, - required String retire, - }) = _FinishDiaryDayModel; + const factory FinishDiaryDayModel({required String wakeUp, required String retire, @JsonKey(includeIfNull: false) String? comment}) = _FinishDiaryDayModel; - factory FinishDiaryDayModel.fromJson(Map json) => _$FinishDiaryDayModelFromJson(json); + factory FinishDiaryDayModel.fromJson(Map json) => _$FinishDiaryDayModelFromJson(json); } diff --git a/lib/features/diary/models/finish_diary_day_model.freezed.dart b/lib/features/diary/models/finish_diary_day_model.freezed.dart index 8b590859..a6631f37 100644 --- a/lib/features/diary/models/finish_diary_day_model.freezed.dart +++ b/lib/features/diary/models/finish_diary_day_model.freezed.dart @@ -23,6 +23,8 @@ FinishDiaryDayModel _$FinishDiaryDayModelFromJson(Map json) { mixin _$FinishDiaryDayModel { String get wakeUp => throw _privateConstructorUsedError; String get retire => throw _privateConstructorUsedError; + @JsonKey(includeIfNull: false) + String? get comment => throw _privateConstructorUsedError; /// Serializes this FinishDiaryDayModel to a JSON map. Map toJson() => throw _privateConstructorUsedError; @@ -41,7 +43,11 @@ abstract class $FinishDiaryDayModelCopyWith<$Res> { $Res Function(FinishDiaryDayModel) then, ) = _$FinishDiaryDayModelCopyWithImpl<$Res, FinishDiaryDayModel>; @useResult - $Res call({String wakeUp, String retire}); + $Res call({ + String wakeUp, + String retire, + @JsonKey(includeIfNull: false) String? comment, + }); } /// @nodoc @@ -58,7 +64,11 @@ class _$FinishDiaryDayModelCopyWithImpl<$Res, $Val extends FinishDiaryDayModel> /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override - $Res call({Object? wakeUp = null, Object? retire = null}) { + $Res call({ + Object? wakeUp = null, + Object? retire = null, + Object? comment = freezed, + }) { return _then( _value.copyWith( wakeUp: @@ -71,6 +81,11 @@ class _$FinishDiaryDayModelCopyWithImpl<$Res, $Val extends FinishDiaryDayModel> ? _value.retire : retire // ignore: cast_nullable_to_non_nullable as String, + comment: + freezed == comment + ? _value.comment + : comment // ignore: cast_nullable_to_non_nullable + as String?, ) as $Val, ); @@ -86,7 +101,11 @@ abstract class _$$FinishDiaryDayModelImplCopyWith<$Res> ) = __$$FinishDiaryDayModelImplCopyWithImpl<$Res>; @override @useResult - $Res call({String wakeUp, String retire}); + $Res call({ + String wakeUp, + String retire, + @JsonKey(includeIfNull: false) String? comment, + }); } /// @nodoc @@ -102,7 +121,11 @@ class __$$FinishDiaryDayModelImplCopyWithImpl<$Res> /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override - $Res call({Object? wakeUp = null, Object? retire = null}) { + $Res call({ + Object? wakeUp = null, + Object? retire = null, + Object? comment = freezed, + }) { return _then( _$FinishDiaryDayModelImpl( wakeUp: @@ -115,6 +138,11 @@ class __$$FinishDiaryDayModelImplCopyWithImpl<$Res> ? _value.retire : retire // ignore: cast_nullable_to_non_nullable as String, + comment: + freezed == comment + ? _value.comment + : comment // ignore: cast_nullable_to_non_nullable + as String?, ), ); } @@ -123,7 +151,11 @@ class __$$FinishDiaryDayModelImplCopyWithImpl<$Res> /// @nodoc @JsonSerializable() class _$FinishDiaryDayModelImpl implements _FinishDiaryDayModel { - const _$FinishDiaryDayModelImpl({required this.wakeUp, required this.retire}); + const _$FinishDiaryDayModelImpl({ + required this.wakeUp, + required this.retire, + @JsonKey(includeIfNull: false) this.comment, + }); factory _$FinishDiaryDayModelImpl.fromJson(Map json) => _$$FinishDiaryDayModelImplFromJson(json); @@ -132,10 +164,13 @@ class _$FinishDiaryDayModelImpl implements _FinishDiaryDayModel { final String wakeUp; @override final String retire; + @override + @JsonKey(includeIfNull: false) + final String? comment; @override String toString() { - return 'FinishDiaryDayModel(wakeUp: $wakeUp, retire: $retire)'; + return 'FinishDiaryDayModel(wakeUp: $wakeUp, retire: $retire, comment: $comment)'; } @override @@ -144,12 +179,13 @@ class _$FinishDiaryDayModelImpl implements _FinishDiaryDayModel { (other.runtimeType == runtimeType && other is _$FinishDiaryDayModelImpl && (identical(other.wakeUp, wakeUp) || other.wakeUp == wakeUp) && - (identical(other.retire, retire) || other.retire == retire)); + (identical(other.retire, retire) || other.retire == retire) && + (identical(other.comment, comment) || other.comment == comment)); } @JsonKey(includeFromJson: false, includeToJson: false) @override - int get hashCode => Object.hash(runtimeType, wakeUp, retire); + int get hashCode => Object.hash(runtimeType, wakeUp, retire, comment); /// Create a copy of FinishDiaryDayModel /// with the given fields replaced by the non-null parameter values. @@ -172,6 +208,7 @@ abstract class _FinishDiaryDayModel implements FinishDiaryDayModel { const factory _FinishDiaryDayModel({ required final String wakeUp, required final String retire, + @JsonKey(includeIfNull: false) final String? comment, }) = _$FinishDiaryDayModelImpl; factory _FinishDiaryDayModel.fromJson(Map json) = @@ -181,6 +218,9 @@ abstract class _FinishDiaryDayModel implements FinishDiaryDayModel { String get wakeUp; @override String get retire; + @override + @JsonKey(includeIfNull: false) + String? get comment; /// Create a copy of FinishDiaryDayModel /// with the given fields replaced by the non-null parameter values. diff --git a/lib/features/diary/models/finish_diary_day_model.g.dart b/lib/features/diary/models/finish_diary_day_model.g.dart index b20f81a9..5721deda 100644 --- a/lib/features/diary/models/finish_diary_day_model.g.dart +++ b/lib/features/diary/models/finish_diary_day_model.g.dart @@ -11,8 +11,13 @@ _$FinishDiaryDayModelImpl _$$FinishDiaryDayModelImplFromJson( ) => _$FinishDiaryDayModelImpl( wakeUp: json['wakeUp'] as String, retire: json['retire'] as String, + comment: json['comment'] as String?, ); Map _$$FinishDiaryDayModelImplToJson( _$FinishDiaryDayModelImpl instance, -) => {'wakeUp': instance.wakeUp, 'retire': instance.retire}; +) => { + 'wakeUp': instance.wakeUp, + 'retire': instance.retire, + if (instance.comment case final value?) 'comment': value, +}; diff --git a/lib/features/diary/presentation/bloc/diary_cubit.dart b/lib/features/diary/presentation/bloc/diary_cubit.dart index 8c18c725..7d57a35d 100644 --- a/lib/features/diary/presentation/bloc/diary_cubit.dart +++ b/lib/features/diary/presentation/bloc/diary_cubit.dart @@ -17,10 +17,7 @@ class DiaryCubit extends Cubit { final DiaryRepository diaryRepository; final GlossaryRepository glossaryRepository; - DiaryCubit({ - required this.diaryRepository, - required this.glossaryRepository, - }) : super(const DiaryState.loading()) { + DiaryCubit({required this.diaryRepository, required this.glossaryRepository}) : super(const DiaryState.loading()) { today = DateTime.now(); selectedDay = today; } @@ -56,16 +53,8 @@ class DiaryCubit extends Cubit { } } - finishDiaryDay({ - required int diaryId, - required String wakeUp, - required String retire, - }) async { - await diaryRepository.finishDiaryDay( - diaryId: diaryId, - wakeUp: wakeUp, - retire: retire, - ); + finishDiaryDay({required int diaryId, required String wakeUp, required String retire, String? comment}) async { + await diaryRepository.finishDiaryDay(diaryId: diaryId, wakeUp: wakeUp, retire: retire, comment: comment); await fetchDiary(); } @@ -126,55 +115,23 @@ class DiaryCubit extends Cubit { await fetchDiary(); } - markEaten({ - required int diaryId, - required int mealId, - required int portionId, - }) async { - await diaryRepository.markEaten( - diaryId: diaryId, - mealId: mealId, - portionId: portionId, - ); + markEaten({required int diaryId, required int mealId, required int portionId}) async { + await diaryRepository.markEaten(diaryId: diaryId, mealId: mealId, portionId: portionId); await fetchDiary(); } - unmarkEaten({ - required int diaryId, - required int mealId, - required int portionId, - }) async { - await diaryRepository.unmarkEaten( - diaryId: diaryId, - mealId: mealId, - portionId: portionId, - ); + unmarkEaten({required int diaryId, required int mealId, required int portionId}) async { + await diaryRepository.unmarkEaten(diaryId: diaryId, mealId: mealId, portionId: portionId); await fetchDiary(); } - restore({ - required int diaryId, - required int mealId, - required int portionId, - }) async { - await diaryRepository.restore( - diaryId: diaryId, - mealId: mealId, - portionId: portionId, - ); + restore({required int diaryId, required int mealId, required int portionId}) async { + await diaryRepository.restore(diaryId: diaryId, mealId: mealId, portionId: portionId); await fetchDiary(); } - deleteProductFromMeal({ - required int diaryId, - required int mealId, - required int portionId, - }) async { - await diaryRepository.deleteProductFromMeal( - diaryId: diaryId, - mealId: mealId, - portionId: portionId, - ); + deleteProductFromMeal({required int diaryId, required int mealId, required int portionId}) async { + await diaryRepository.deleteProductFromMeal(diaryId: diaryId, mealId: mealId, portionId: portionId); await fetchDiary(); } @@ -182,27 +139,13 @@ class DiaryCubit extends Cubit { return await glossaryRepository.getGlossaryListByQuery(query); } - uploadPhotos({ - required List files, - required int diaryId, - }) async { - await diaryRepository.uploadPhotos( - files: await ImageCompressUtility.compressFilesList(files), - diaryId: diaryId, - mealId: selectedMeal, - ); + uploadPhotos({required List files, required int diaryId}) async { + await diaryRepository.uploadPhotos(files: await ImageCompressUtility.compressFilesList(files), diaryId: diaryId, mealId: selectedMeal); await fetchDiary(); } - deletePhoto({ - required DiaryPhotoModel photo, - required int diaryId, - }) async { - await diaryRepository.deletePhoto( - photo: photo, - diaryId: diaryId, - mealId: selectedMeal, - ); + deletePhoto({required DiaryPhotoModel photo, required int diaryId}) async { + await diaryRepository.deletePhoto(photo: photo, diaryId: diaryId, mealId: selectedMeal); await fetchDiary(); } @@ -214,39 +157,37 @@ class DiaryCubit extends Cubit { required double carbohydrates, }) async { try { - return await diaryRepository.sendProductToModeration( - name: name, - energy: energy, - proteins: proteins, - fats: fats, - carbohydrates: carbohydrates, - ); + return await diaryRepository.sendProductToModeration(name: name, energy: energy, proteins: proteins, fats: fats, carbohydrates: carbohydrates); } catch (e, stackTrace) { log(e.toString(), stackTrace: stackTrace); } return null; } - fillTime({ - required int diaryId, - required String time, - }) async { - await diaryRepository.fillTime( - diaryId: diaryId, - mealId: selectedMeal, - time: time, - ); + fillTime({required int diaryId, required String time}) async { + await diaryRepository.fillTime(diaryId: diaryId, mealId: selectedMeal, time: time); await fetchDiary(); } - fillSatiety({ - required int diaryId, - required int satiety, - }) async { - await diaryRepository.fillSatiety( - diaryId: diaryId, - mealId: selectedMeal, - satiety: satiety, - ); + fillWakeup({required int diaryId, required String time}) async { + await diaryRepository.fillWakeup(diaryId: diaryId, time: time); + await fetchDiary(); + } + + fillRetire({required int diaryId, required String time}) async { + await diaryRepository.fillRetire(diaryId: diaryId, time: time); + await fetchDiary(); + } + + fillSatiety({required int diaryId, required int satiety}) async { + await diaryRepository.fillSatiety(diaryId: diaryId, mealId: selectedMeal, satiety: satiety); + } + + fillMood({required int diaryId, required int mood}) async { + await diaryRepository.fillMood(diaryId: diaryId, mealId: selectedMeal, mood: mood); + } + + fillComment(String comment) { + emit((state as DiaryStateLoaded).copyWith(diary: (state as DiaryStateLoaded).diary.copyWith(comment: comment))); } } diff --git a/lib/features/diary/presentation/pages/diary_screen.dart b/lib/features/diary/presentation/pages/diary_screen.dart index 8c5e784f..7f230e2b 100644 --- a/lib/features/diary/presentation/pages/diary_screen.dart +++ b/lib/features/diary/presentation/pages/diary_screen.dart @@ -7,8 +7,10 @@ import 'package:eatvio_app/features/diary/presentation/bloc/diary_state.dart'; import 'package:eatvio_app/features/diary/presentation/widgets/calendar_widget.dart'; import 'package:eatvio_app/core/locator_service.dart'; import 'package:eatvio_app/features/diary/presentation/widgets/calories_chart_widget.dart'; +import 'package:eatvio_app/features/diary/presentation/widgets/comment_for_consultant_widget.dart'; import 'package:eatvio_app/features/diary/presentation/widgets/finish_day_button_widget.dart'; import 'package:eatvio_app/features/diary/presentation/widgets/meal_widget.dart'; +import 'package:eatvio_app/features/diary/presentation/widgets/wakeup_and_retire_widget.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -46,8 +48,12 @@ class _DiaryScreenState extends State { children: [ CalendarWidget(), if (state is DiaryStateLoading) const Loader(), + if (state is DiaryStateLoaded) WakeupAndRetireWidget(), + const SizedBox(height: 12), if (state is DiaryStateLoaded) MealWidget(), - CaloriesChartWidget(), + if (state is DiaryStateLoaded) CaloriesChartWidget(), + const SizedBox(height: 12), + if (state is DiaryStateLoaded) CommentForConsultantWidget(), if (state is DiaryStateLoaded && state.diary.closed == 0) Padding( padding: const EdgeInsets.only(top: 12), diff --git a/lib/features/diary/presentation/widgets/comment_for_consultant_widget.dart b/lib/features/diary/presentation/widgets/comment_for_consultant_widget.dart new file mode 100644 index 00000000..0e276f72 --- /dev/null +++ b/lib/features/diary/presentation/widgets/comment_for_consultant_widget.dart @@ -0,0 +1,44 @@ +import 'package:easy_debounce/easy_debounce.dart'; +import 'package:eatvio_app/core/widgets/custom_text_form_field.dart'; +import 'package:eatvio_app/features/diary/presentation/bloc/diary_cubit.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class CommentForConsultantWidget extends StatefulWidget { + const CommentForConsultantWidget({super.key}); + + @override + State createState() => _CommentForConsultantWidgetState(); +} + +class _CommentForConsultantWidgetState extends State { + @override + Widget build(BuildContext context) { + return Material( + borderRadius: BorderRadius.circular(20), + color: Colors.white, + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'ДополнительнаÑ� информациÑ� длÑ� конÑ�ультанта', + textAlign: TextAlign.center, + style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600, color: Color(0xFF323F4B), height: 1), + ), + const SizedBox(height: 12), + CustomTextFormField( + onChanged: (value) { + EasyDebounce.debounce('client-typing', Duration(seconds: 3), () => context.read().fillComment(value)); + }, + hintText: 'Укажите дополнительную информацию', + minLines: 4, + maxLines: 4, + ), + ], + ), + ), + ); + } +} diff --git a/lib/features/diary/presentation/widgets/finish_day_button_widget.dart b/lib/features/diary/presentation/widgets/finish_day_button_widget.dart index 3ed14e27..651f4a66 100644 --- a/lib/features/diary/presentation/widgets/finish_day_button_widget.dart +++ b/lib/features/diary/presentation/widgets/finish_day_button_widget.dart @@ -7,10 +7,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; class FinishDayButtonWidget extends StatefulWidget { final DiaryDayModel diaryDay; - const FinishDayButtonWidget({ - super.key, - required this.diaryDay, - }); + const FinishDayButtonWidget({super.key, required this.diaryDay}); @override State createState() => _FinishDayButtonWidgetState(); @@ -20,30 +17,22 @@ class _FinishDayButtonWidgetState extends State { @override Widget build(BuildContext context) { return InkWell( - onTap: () => context.read().finishDiaryDay( + onTap: + () => context.read().finishDiaryDay( diaryId: widget.diaryDay.id, wakeUp: widget.diaryDay.wakeup.toString(), retire: widget.diaryDay.retire.toString(), + comment: widget.diaryDay.comment.isEmpty ? null : widget.diaryDay.comment, ), borderRadius: BorderRadius.circular(20), child: Ink( padding: EdgeInsets.symmetric(horizontal: 8), width: MediaQuery.of(context).size.width - 16, - decoration: BoxDecoration( - color: appTheme.blueA400, - borderRadius: BorderRadius.circular(20), - ), + decoration: BoxDecoration(color: appTheme.blueA400, borderRadius: BorderRadius.circular(20)), child: Container( padding: EdgeInsets.all(16), alignment: Alignment.center, - child: Text( - 'Закончить день', - style: TextStyle( - color: Colors.white, - fontSize: 18, - fontWeight: FontWeight.w600, - ), - ), + child: Text('Закончить день', style: TextStyle(color: Colors.white, fontSize: 18, fontWeight: FontWeight.w600)), ), ), ); diff --git a/lib/features/diary/presentation/widgets/meal_widget.dart b/lib/features/diary/presentation/widgets/meal_widget.dart index 43f7976c..d1c1f59f 100644 --- a/lib/features/diary/presentation/widgets/meal_widget.dart +++ b/lib/features/diary/presentation/widgets/meal_widget.dart @@ -1,5 +1,6 @@ import 'package:eatvio_app/features/diary/presentation/widgets/add_product_button_widget.dart'; import 'package:eatvio_app/features/diary/presentation/widgets/meal_button_widget.dart'; +import 'package:eatvio_app/features/diary/presentation/widgets/mood_rating_widget.dart'; import 'package:eatvio_app/features/diary/presentation/widgets/photo_gallery_widget.dart'; import 'package:eatvio_app/features/diary/presentation/widgets/products_list_widget.dart'; import 'package:eatvio_app/features/diary/presentation/widgets/satiety_rating_widget.dart'; @@ -53,6 +54,8 @@ class _MealWidgetState extends State { PhotoGalleryWidget(), const SizedBox(height: 12), SatietyRatingWidget(), + const SizedBox(height: 12), + MoodRatingWidget(), ], ), ), diff --git a/lib/features/diary/presentation/widgets/mood_rating_widget.dart b/lib/features/diary/presentation/widgets/mood_rating_widget.dart new file mode 100644 index 00000000..9d8c6dab --- /dev/null +++ b/lib/features/diary/presentation/widgets/mood_rating_widget.dart @@ -0,0 +1,199 @@ +import 'package:easy_debounce/easy_debounce.dart'; +import 'package:eatvio_app/features/diary/presentation/bloc/diary_cubit.dart'; +import 'package:eatvio_app/features/diary/presentation/bloc/diary_state.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_rating_bar/flutter_rating_bar.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class MoodRatingWidget extends StatefulWidget { + @override + State createState() => _MoodRatingWidgetState(); +} + +class _MoodRatingWidgetState extends State { + late double currentSelectedRating; + bool isFirstFetch = true; + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (BuildContext context, DiaryState state) { + if (state is DiaryStateLoaded) { + if (isFirstFetch) { + currentSelectedRating = state.diary.meals[state.selectedMeal - 1].mood.toDouble() + 1; + isFirstFetch = false; + } + return Padding( + padding: const EdgeInsets.only(top: 24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Ваше наÑ�троение поÑ�ле приёма пищи', + style: TextStyle( + fontSize: 16, + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SvgPicture.asset( + 'assets/icons/mood_1.svg', + height: 32, + width: 32, + ), + RatingBar.builder( + initialRating: state.diary.meals[state.selectedMeal - 1].mood.toDouble() + 1, + itemCount: 6, + itemSize: MediaQuery.of(context).size.width / 6 - (124 / 6), + updateOnDrag: true, + itemBuilder: (context, index) { + switch (index) { + case 0: + return Container( + width: MediaQuery.of(context).size.width / 6, + height: 24, + margin: currentSelectedRating == 1 ? EdgeInsets.symmetric(horizontal: 2) : null, + decoration: BoxDecoration( + color: Color(0xFFC82222), + border: currentSelectedRating == 1 + ? Border.all( + width: 2, + color: Color(0xFFAA3333), + strokeAlign: BorderSide.strokeAlignOutside, + ) + : null, + borderRadius: currentSelectedRating == 1 + ? BorderRadius.horizontal( + left: Radius.circular(8), + right: Radius.circular(2), + ) + : BorderRadius.horizontal( + left: Radius.circular(8), + ), + ), + ); + case 1: + return Container( + width: MediaQuery.of(context).size.width / 6, + height: 24, + margin: currentSelectedRating == 2 ? EdgeInsets.symmetric(horizontal: 2) : null, + decoration: BoxDecoration( + color: Color(0xFFFF3E3E), + border: currentSelectedRating == 2 + ? Border.all( + width: 2, + color: Color(0xFF550000), + strokeAlign: BorderSide.strokeAlignOutside, + ) + : null, + borderRadius: currentSelectedRating == 2 ? BorderRadius.circular(2) : null, + ), + ); + case 2: + return Container( + width: MediaQuery.of(context).size.width / 6, + height: 24, + margin: currentSelectedRating == 3 ? EdgeInsets.symmetric(horizontal: 2) : null, + decoration: BoxDecoration( + color: Color(0xFFF8C926), + border: currentSelectedRating == 3 + ? Border.all( + width: 2, + color: Color(0xFF8C5D00), + strokeAlign: BorderSide.strokeAlignOutside, + ) + : null, + borderRadius: currentSelectedRating == 3 ? BorderRadius.circular(2) : null, + ), + ); + case 3: + return Container( + width: MediaQuery.of(context).size.width / 6, + height: 24, + margin: currentSelectedRating == 4 ? EdgeInsets.symmetric(horizontal: 2) : null, + decoration: BoxDecoration( + color: Color(0xFFFFF3BF), + border: currentSelectedRating == 4 + ? Border.all( + width: 2, + color: Color(0xFFB5911B), + strokeAlign: BorderSide.strokeAlignOutside, + ) + : null, + borderRadius: currentSelectedRating == 4 ? BorderRadius.circular(2) : null, + ), + ); + case 4: + return Container( + width: MediaQuery.of(context).size.width / 6, + height: 24, + margin: currentSelectedRating == 5 ? EdgeInsets.symmetric(horizontal: 2) : null, + decoration: BoxDecoration( + color: Color(0xFF62E833), + border: currentSelectedRating == 5 + ? Border.all( + width: 2, + color: Color(0xFF276918), + strokeAlign: BorderSide.strokeAlignOutside, + ) + : null, + borderRadius: currentSelectedRating == 5 ? BorderRadius.circular(2) : null, + ), + ); + default: + return Container( + width: MediaQuery.of(context).size.width / 6, + height: 24, + margin: currentSelectedRating == 6 ? EdgeInsets.symmetric(horizontal: 2) : null, + decoration: BoxDecoration( + color: Color(0xFF4DCE20), + border: currentSelectedRating == 6 + ? Border.all( + width: 2, + color: Color(0xFF184D12), + strokeAlign: BorderSide.strokeAlignOutside, + ) + : null, + borderRadius: currentSelectedRating == 6 + ? BorderRadius.horizontal( + left: Radius.circular(2), + right: Radius.circular(8), + ) + : BorderRadius.horizontal( + right: Radius.circular(8), + ), + ), + ); + } + }, + onRatingUpdate: (value) { + setState(() { + currentSelectedRating = value; + }); + EasyDebounce.debounce( + 'change-satiety', + Duration(milliseconds: 250), + () { + context.read().fillMood(diaryId: state.diary.id, mood: currentSelectedRating.toInt() - 1); + }, + ); + }, + ), + SvgPicture.asset( + 'assets/icons/mood_2.svg', + height: 32, + width: 32, + ), + ], + ), + ], + ), + ); + } + return const SizedBox.shrink(); + }, + ); + } +} diff --git a/lib/features/diary/presentation/widgets/satiety_rating_widget.dart b/lib/features/diary/presentation/widgets/satiety_rating_widget.dart index 89404fcc..28ab9996 100644 --- a/lib/features/diary/presentation/widgets/satiety_rating_widget.dart +++ b/lib/features/diary/presentation/widgets/satiety_rating_widget.dart @@ -21,7 +21,7 @@ class _SatietyRatingWidgetState extends State { builder: (BuildContext context, DiaryState state) { if (state is DiaryStateLoaded) { if (isFirstFetch) { - currentSelectedRating = state.diary.meals[state.selectedMeal - 1].satiety.toDouble(); + currentSelectedRating = state.diary.meals[state.selectedMeal - 1].satiety.toDouble() + 1; isFirstFetch = false; } return Padding( @@ -44,7 +44,7 @@ class _SatietyRatingWidgetState extends State { width: 32, ), RatingBar.builder( - initialRating: state.diary.meals[state.selectedMeal - 1].satiety.toDouble(), + initialRating: state.diary.meals[state.selectedMeal - 1].satiety.toDouble() + 1, itemCount: 6, itemSize: MediaQuery.of(context).size.width / 6 - (124 / 6), updateOnDrag: true, @@ -176,7 +176,7 @@ class _SatietyRatingWidgetState extends State { 'change-satiety', Duration(milliseconds: 250), () { - context.read().fillSatiety(diaryId: state.diary.id, satiety: currentSelectedRating.toInt()); + context.read().fillSatiety(diaryId: state.diary.id, satiety: currentSelectedRating.toInt() - 1); }, ); }, diff --git a/lib/features/diary/presentation/widgets/wakeup_and_retire_widget.dart b/lib/features/diary/presentation/widgets/wakeup_and_retire_widget.dart new file mode 100644 index 00000000..65c3cbe8 --- /dev/null +++ b/lib/features/diary/presentation/widgets/wakeup_and_retire_widget.dart @@ -0,0 +1,229 @@ +import 'package:eatvio_app/features/diary/presentation/bloc/diary_cubit.dart'; +import 'package:eatvio_app/features/diary/presentation/bloc/diary_state.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +import '../../../../core/theme/theme_helper.dart'; + +class WakeupAndRetireWidget extends StatefulWidget { + const WakeupAndRetireWidget({super.key}); + + @override + State createState() => _WakeupAndRetireWidgetState(); +} + +class _WakeupAndRetireWidgetState extends State { + late final DiaryCubit diaryCubit; + DateTime wakeup = DateTime.now().copyWith(hour: 6, minute: 30); + DateTime retire = DateTime.now().copyWith(hour: 22, minute: 30); + + @override + void initState() { + super.initState(); + diaryCubit = context.read(); + } + + showTimePicker(int diaryId, bool isWakeup) { + showModalBottomSheet( + context: context, + useRootNavigator: true, + builder: + (context) => SizedBox( + height: MediaQuery.of(context).copyWith().size.height / 3, + child: Column( + children: [ + Expanded( + child: CupertinoDatePicker( + mode: CupertinoDatePickerMode.time, + use24hFormat: true, + initialDateTime: DateTime.now(), + onDateTimeChanged: (newTime) { + if (isWakeup) { + wakeup = newTime; + } else { + retire = newTime; + } + }, + ), + ), + InkWell( + onTap: () { + Navigator.of(context).pop(); + if (isWakeup) { + diaryCubit.fillWakeup( + diaryId: diaryId, + time: + '${wakeup.hour.toString().padLeft(2, '0')}:${wakeup.minute.toString().padLeft(2, '0')}:00', + ); + } else { + diaryCubit.fillRetire( + diaryId: diaryId, + time: + '${retire.hour.toString().padLeft(2, '0')}:${retire.minute.toString().padLeft(2, '0')}:00', + ); + } + }, + borderRadius: BorderRadius.circular(20), + child: Ink( + width: MediaQuery.of(context).size.width - 16, + height: 52, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + color: appTheme.blueA400, + ), + child: Center( + child: Text( + 'Сохранить', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w600, + color: Colors.white, + ), + ), + ), + ), + ), + ], + ), + ), + ); + } + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) { + if (state is DiaryStateLoaded) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Row( + children: [ + Expanded( + child: Material( + borderRadius: BorderRadius.circular(12), + color: Colors.white, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 12, + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset('assets/icons/wakeup.svg'), + const SizedBox(width: 8), + Text( + 'Подъём', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w500, + height: 1, + ), + ), + ], + ), + const SizedBox(height: 8), + InkWell( + onTap: () => showTimePicker(state.diary.id, true), + borderRadius: BorderRadius.circular(100), + child: Ink( + height: 32, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(100), + color: Color(0xFFF1F2F6), + ), + child: Container( + alignment: Alignment.center, + padding: EdgeInsets.symmetric(horizontal: 16), + child: Text( + state.diary.wakeup.toString().substring( + 0, + state.diary.wakeup.toString().length - 3, + ), + style: TextStyle( + color: Color(0xFF6D6F71), + fontSize: 17, + fontWeight: FontWeight.w500, + ), + ), + ), + ), + ), + ], + ), + ), + ), + ), + const SizedBox(width: 8), + Expanded( + child: Material( + borderRadius: BorderRadius.circular(12), + color: Colors.white, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 12, + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset('assets/icons/retire.svg'), + const SizedBox(width: 8), + Text( + 'Уход ко Ñ�ну', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w500, + height: 1, + ), + ), + ], + ), + const SizedBox(height: 8), + InkWell( + onTap: () => showTimePicker(state.diary.id, false), + borderRadius: BorderRadius.circular(100), + child: Ink( + height: 32, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(100), + color: Color(0xFFF1F2F6), + ), + child: Container( + alignment: Alignment.center, + padding: EdgeInsets.symmetric(horizontal: 16), + child: Text( + state.diary.retire.toString().substring( + 0, + state.diary.retire.toString().length - 3, + ), + style: TextStyle( + color: Color(0xFF6D6F71), + fontSize: 17, + fontWeight: FontWeight.w500, + ), + ), + ), + ), + ), + ], + ), + ), + ), + ), + ], + ), + ); + } else { + return SizedBox.shrink(); + } + }, + ); + } +} diff --git a/lib/features/diary/repositories/diary_repository.dart b/lib/features/diary/repositories/diary_repository.dart index 754e1321..ad7a0448 100644 --- a/lib/features/diary/repositories/diary_repository.dart +++ b/lib/features/diary/repositories/diary_repository.dart @@ -158,12 +158,14 @@ class DiaryRepository { required int diaryId, required String wakeUp, required String retire, + String? comment, }) async { return await diaryService.finishDiaryDay( diary: diaryId, finishDiaryDayModel: FinishDiaryDayModel( wakeUp: wakeUp, retire: retire, + comment: comment ), ); } @@ -202,6 +204,22 @@ class DiaryRepository { } } + Future fillMood({ + required int diaryId, + required int mealId, + required int mood, + }) async { + try { + return await diaryService.fillMood( + diary: diaryId, + typeNo: mealId, + mood: mood, + ); + } catch (e) { + rethrow; + } + } + Future fillTime({ required int diaryId, required int mealId, @@ -217,4 +235,32 @@ class DiaryRepository { rethrow; } } + + Future fillWakeup({ + required int diaryId, + required String time, + }) async { + try { + return await diaryService.fillWakeup( + diary: diaryId, + wakeUp: time, + ); + } catch (e) { + rethrow; + } + } + + Future fillRetire({ + required int diaryId, + required String time, + }) async { + try { + return await diaryService.fillRetire( + diary: diaryId, + retire: time, + ); + } catch (e) { + rethrow; + } + } } diff --git a/lib/features/diary/services/diary_service.dart b/lib/features/diary/services/diary_service.dart index 6a519b71..8506e466 100644 --- a/lib/features/diary/services/diary_service.dart +++ b/lib/features/diary/services/diary_service.dart @@ -91,7 +91,7 @@ abstract class DiaryService { @POST('/api/diary/{diary}/finishDay') Future finishDiaryDay({ @Path('diary') required int diary, - @Body() required FinishDiaryDayModel finishDiaryDayModel, + @Body(nullToAbsent: true) required FinishDiaryDayModel finishDiaryDayModel, }); @POST('/api/diary/{diary}/meals/{type_no}/satiety/fill') @@ -101,6 +101,13 @@ abstract class DiaryService { @Field() required int satiety, }); + @POST('/api/diary/{diary}/meals/{type_no}/mood/fill') + Future fillMood({ + @Path('diary') required int diary, + @Path('type_no') required int typeNo, + @Field() required int mood, + }); + @POST('/api/diary/{diary}/meals/{type_no}/time/fill') Future fillTime({ @Path('diary') required int diary, @@ -108,6 +115,18 @@ abstract class DiaryService { @Field() required String time, }); + @POST('/api/diary/{diary}/wakeUp/fill') + Future fillWakeup({ + @Path('diary') required int diary, + @Field() required String wakeUp, + }); + + @POST('/api/diary/{diary}/retire/fill') + Future fillRetire({ + @Path('diary') required int diary, + @Field() required String retire, + }); + @POST('/api/diary/product_nutritional_values/sendToModeration') Future sendProductToModeration({ @Body() required Map data, diff --git a/lib/features/diary/services/diary_service.g.dart b/lib/features/diary/services/diary_service.g.dart index c369088f..16bd7dbe 100644 --- a/lib/features/diary/services/diary_service.g.dart +++ b/lib/features/diary/services/diary_service.g.dart @@ -366,6 +366,29 @@ class _DiaryService implements DiaryService { await _dio.fetch(_options); } + @override + Future fillMood({ + required int diary, + required int typeNo, + required int mood, + }) async { + final _extra = {}; + final queryParameters = {}; + final _headers = {}; + final _data = {'mood': mood}; + final _options = _setStreamType( + Options(method: 'POST', headers: _headers, extra: _extra) + .compose( + _dio.options, + '/api/diary/${diary}/meals/${typeNo}/mood/fill', + queryParameters: queryParameters, + data: _data, + ) + .copyWith(baseUrl: _combineBaseUrls(_dio.options.baseUrl, baseUrl)), + ); + await _dio.fetch(_options); + } + @override Future fillTime({ required int diary, @@ -389,6 +412,44 @@ class _DiaryService implements DiaryService { await _dio.fetch(_options); } + @override + Future fillWakeup({required int diary, required String wakeUp}) async { + final _extra = {}; + final queryParameters = {}; + final _headers = {}; + final _data = {'wakeUp': wakeUp}; + final _options = _setStreamType( + Options(method: 'POST', headers: _headers, extra: _extra) + .compose( + _dio.options, + '/api/diary/${diary}/wakeUp/fill', + queryParameters: queryParameters, + data: _data, + ) + .copyWith(baseUrl: _combineBaseUrls(_dio.options.baseUrl, baseUrl)), + ); + await _dio.fetch(_options); + } + + @override + Future fillRetire({required int diary, required String retire}) async { + final _extra = {}; + final queryParameters = {}; + final _headers = {}; + final _data = {'retire': retire}; + final _options = _setStreamType( + Options(method: 'POST', headers: _headers, extra: _extra) + .compose( + _dio.options, + '/api/diary/${diary}/retire/fill', + queryParameters: queryParameters, + data: _data, + ) + .copyWith(baseUrl: _combineBaseUrls(_dio.options.baseUrl, baseUrl)), + ); + await _dio.fetch(_options); + } + @override Future sendProductToModeration({ required Map data, diff --git a/pubspec.yaml b/pubspec.yaml index a6ab85d4..fc1addf4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -73,6 +73,7 @@ dev_dependencies: json_serializable: ^6.9.4 retrofit_generator: ^9.1.9 mockito: ^5.4.5 + flutter_lints: ^5.0.0 flutter_test: sdk: flutter From d0a1b72cbe288df788f24c93c443f8b860a2e929 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 24 Mar 2025 17:46:28 +0300 Subject: [PATCH 13/13] fix(analyzer): all --- analysis_options.yaml | 5 ----- pubspec.yaml | 1 - 2 files changed, 6 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index fe64289f..a614abae 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,11 +1,6 @@ -include: package:flutter_lints/flutter.yaml - linter: rules: -formatter: - page_width: 80 - analyzer: exclude: - '**/*.g.dart' diff --git a/pubspec.yaml b/pubspec.yaml index fc1addf4..a6ab85d4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -73,7 +73,6 @@ dev_dependencies: json_serializable: ^6.9.4 retrofit_generator: ^9.1.9 mockito: ^5.4.5 - flutter_lints: ^5.0.0 flutter_test: sdk: flutter