From 5d7d233d2ecb4b9ac8225c3d5d904d388c7751db Mon Sep 17 00:00:00 2001
From: zhutao <1812073942@qq.com>
Date: Thu, 28 Aug 2025 16:27:56 +0800
Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 45 +
.metadata | 33 +
README.md | 16 +
analysis_options.yaml | 30 +
android/.gitignore | 14 +
android/app/build.gradle.kts | 44 +
android/app/src/debug/AndroidManifest.xml | 7 +
android/app/src/main/AndroidManifest.xml | 45 +
.../com/xx/x/food_health/MainActivity.kt | 5 +
.../res/drawable-v21/launch_background.xml | 11 +
.../main/res/drawable/launch_background.xml | 11 +
.../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3733 bytes
.../src/main/res/mipmap-ldpi/ic_launcher.png | Bin 0 -> 1700 bytes
.../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2356 bytes
.../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5679 bytes
.../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 9636 bytes
.../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 13617 bytes
.../app/src/main/res/values-night/styles.xml | 18 +
android/app/src/main/res/values/styles.xml | 18 +
android/app/src/profile/AndroidManifest.xml | 7 +
android/build.gradle.kts | 21 +
android/gradle.properties | 3 +
.../gradle/wrapper/gradle-wrapper.properties | 5 +
android/settings.gradle.kts | 25 +
assets/image/apple.png | Bin 0 -> 1117 bytes
assets/image/bg_hushi.png | Bin 0 -> 549824 bytes
assets/image/empty_data.png | Bin 0 -> 34985 bytes
assets/image/google.png | Bin 0 -> 1319 bytes
assets/image/logo.png | Bin 0 -> 15769 bytes
devtools_options.yaml | 3 +
ios/.gitignore | 34 +
ios/Flutter/AppFrameworkInfo.plist | 26 +
ios/Flutter/Debug.xcconfig | 1 +
ios/Flutter/Release.xcconfig | 1 +
ios/Runner.xcodeproj/project.pbxproj | 616 ++++++++++++
.../contents.xcworkspacedata | 7 +
.../xcshareddata/IDEWorkspaceChecks.plist | 8 +
.../xcshareddata/WorkspaceSettings.xcsettings | 8 +
.../xcshareddata/xcschemes/Runner.xcscheme | 101 ++
.../contents.xcworkspacedata | 7 +
.../xcshareddata/IDEWorkspaceChecks.plist | 8 +
.../xcshareddata/WorkspaceSettings.xcsettings | 8 +
ios/Runner/AppDelegate.swift | 13 +
.../AppIcon.appiconset/Contents.json | 120 +++
.../AppIcon.appiconset/icon-1024.png | Bin 0 -> 61845 bytes
.../AppIcon.appiconset/icon-20@2x.png | Bin 0 -> 1718 bytes
.../AppIcon.appiconset/icon-20@3x.png | Bin 0 -> 2409 bytes
.../AppIcon.appiconset/icon-29@2x.png | Bin 0 -> 2441 bytes
.../AppIcon.appiconset/icon-29@3x.png | Bin 0 -> 4272 bytes
.../AppIcon.appiconset/icon-38@2x.png | Bin 0 -> 3625 bytes
.../AppIcon.appiconset/icon-38@3x.png | Bin 0 -> 6030 bytes
.../AppIcon.appiconset/icon-40@2x.png | Bin 0 -> 3555 bytes
.../AppIcon.appiconset/icon-40@3x.png | Bin 0 -> 6352 bytes
.../AppIcon.appiconset/icon-60@2x.png | Bin 0 -> 6352 bytes
.../AppIcon.appiconset/icon-60@3x.png | Bin 0 -> 10787 bytes
.../AppIcon.appiconset/icon-64@2x.png | Bin 0 -> 7532 bytes
.../AppIcon.appiconset/icon-64@3x.png | Bin 0 -> 11894 bytes
.../AppIcon.appiconset/icon-68@2x.png | Bin 0 -> 7922 bytes
.../AppIcon.appiconset/icon-76@2x.png | Bin 0 -> 8388 bytes
.../AppIcon.appiconset/icon-83.5@2x.png | Bin 0 -> 10486 bytes
.../LaunchImage.imageset/Contents.json | 23 +
.../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes
.../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes
.../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes
.../LaunchImage.imageset/README.md | 8 +
ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 +
ios/Runner/Base.lproj/Main.storyboard | 26 +
ios/Runner/Info.plist | 66 ++
ios/Runner/Runner-Bridging-Header.h | 1 +
ios/RunnerTests/RunnerTests.swift | 12 +
lib/api/dto/base_dto.dart | 15 +
lib/api/dto/food_scan_dto.dart | 49 +
lib/api/dto/login_dto.dart | 86 ++
lib/api/dto/profile_options_dto.dart | 18 +
lib/api/dto/user_profile_dto.dart | 58 ++
lib/api/endpoints/food_api.dart | 23 +
lib/api/endpoints/profile_api.dart | 27 +
lib/api/endpoints/user_api.dart | 49 +
lib/api/network/interceptor.dart | 64 ++
lib/api/network/request.dart | 46 +
lib/api/network/safe.dart | 14 +
lib/config/app_context.dart | 23 +
lib/config/env.dart | 19 +
lib/config/theme/custom_colors.dart | 14 +
lib/config/theme/theme.dart | 30 +
lib/data/local/storage.dart | 48 +
lib/data/models/other_login_type.dart | 8 +
lib/data/models/skin_check_status.dart | 22 +
lib/layout/layout_page.dart | 65 ++
lib/layout/tabbar.dart | 9 +
lib/main.dart | 55 ++
lib/page/home/home_page.dart | 30 +
lib/page/home/widget/home_header.dart | 28 +
lib/page/home/widget/upload_panel.dart | 193 ++++
lib/page/profile/edit/data/state.dart | 25 +
lib/page/profile/edit/my_edit_page.dart | 292 ++++++
lib/page/profile/edit/util/common.dart | 9 +
lib/page/profile/edit/widget/common.dart | 100 ++
.../edit/widget/dietary_preferences.dart | 127 +++
.../profile/edit/widget/food_allergies.dart | 144 +++
.../profile/edit/widget/health_profile.dart | 151 +++
lib/page/profile/my/my_page.dart | 155 +++
lib/page/profile/my/widget/title_card.dart | 50 +
lib/page/profile/my/widget/user_card.dart | 180 ++++
.../record/detail/record_detail_page.dart | 41 +
.../detail/widget/detailed_analysis.dart | 76 ++
.../detail/widget/health_recommend.dart | 53 ++
.../record/detail/widget/result_chip.dart | 96 ++
lib/page/record/list/record_list_page.dart | 78 ++
.../record/list/widget/record_list_card.dart | 157 +++
lib/page/system/agree/agree_page.dart | 23 +
lib/page/system/login/login_code_page.dart | 115 +++
lib/page/system/login/login_page.dart | 293 ++++++
.../system/login/widget/agreement_box.dart | 66 ++
lib/page/system/login/widget/widget.dart | 166 ++++
lib/page/system/splash/splash_page.dart | 65 ++
lib/providers/app_store.dart | 46 +
lib/router/config/route_paths.dart | 24 +
lib/router/config/route_type.dart | 16 +
lib/router/modules/base.dart | 49 +
lib/router/modules/serve.dart | 27 +
lib/router/routes.dart | 28 +
lib/utils/common.dart | 14 +
lib/utils/format.dart | 35 +
lib/widgets/common/app_backend.dart | 27 +
lib/widgets/common/app_header.dart | 43 +
lib/widgets/common/async_image.dart | 45 +
lib/widgets/ui_kit/button/custom_button.dart | 84 ++
lib/widgets/ui_kit/empty/index.dart | 34 +
pubspec.lock | 898 ++++++++++++++++++
pubspec.yaml | 43 +
test/widget_test.dart | 30 +
132 files changed, 6390 insertions(+)
create mode 100644 .gitignore
create mode 100644 .metadata
create mode 100644 README.md
create mode 100644 analysis_options.yaml
create mode 100644 android/.gitignore
create mode 100644 android/app/build.gradle.kts
create mode 100644 android/app/src/debug/AndroidManifest.xml
create mode 100644 android/app/src/main/AndroidManifest.xml
create mode 100644 android/app/src/main/kotlin/com/xx/x/food_health/MainActivity.kt
create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml
create mode 100644 android/app/src/main/res/drawable/launch_background.xml
create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png
create mode 100644 android/app/src/main/res/mipmap-ldpi/ic_launcher.png
create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png
create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
create mode 100644 android/app/src/main/res/values-night/styles.xml
create mode 100644 android/app/src/main/res/values/styles.xml
create mode 100644 android/app/src/profile/AndroidManifest.xml
create mode 100644 android/build.gradle.kts
create mode 100644 android/gradle.properties
create mode 100644 android/gradle/wrapper/gradle-wrapper.properties
create mode 100644 android/settings.gradle.kts
create mode 100644 assets/image/apple.png
create mode 100644 assets/image/bg_hushi.png
create mode 100644 assets/image/empty_data.png
create mode 100644 assets/image/google.png
create mode 100644 assets/image/logo.png
create mode 100644 devtools_options.yaml
create mode 100644 ios/.gitignore
create mode 100644 ios/Flutter/AppFrameworkInfo.plist
create mode 100644 ios/Flutter/Debug.xcconfig
create mode 100644 ios/Flutter/Release.xcconfig
create mode 100644 ios/Runner.xcodeproj/project.pbxproj
create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata
create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
create mode 100644 ios/Runner/AppDelegate.swift
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-1024.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-38@2x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-38@3x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard
create mode 100644 ios/Runner/Base.lproj/Main.storyboard
create mode 100644 ios/Runner/Info.plist
create mode 100644 ios/Runner/Runner-Bridging-Header.h
create mode 100644 ios/RunnerTests/RunnerTests.swift
create mode 100644 lib/api/dto/base_dto.dart
create mode 100644 lib/api/dto/food_scan_dto.dart
create mode 100644 lib/api/dto/login_dto.dart
create mode 100644 lib/api/dto/profile_options_dto.dart
create mode 100644 lib/api/dto/user_profile_dto.dart
create mode 100644 lib/api/endpoints/food_api.dart
create mode 100644 lib/api/endpoints/profile_api.dart
create mode 100644 lib/api/endpoints/user_api.dart
create mode 100644 lib/api/network/interceptor.dart
create mode 100644 lib/api/network/request.dart
create mode 100644 lib/api/network/safe.dart
create mode 100644 lib/config/app_context.dart
create mode 100644 lib/config/env.dart
create mode 100644 lib/config/theme/custom_colors.dart
create mode 100644 lib/config/theme/theme.dart
create mode 100644 lib/data/local/storage.dart
create mode 100644 lib/data/models/other_login_type.dart
create mode 100644 lib/data/models/skin_check_status.dart
create mode 100644 lib/layout/layout_page.dart
create mode 100644 lib/layout/tabbar.dart
create mode 100644 lib/main.dart
create mode 100644 lib/page/home/home_page.dart
create mode 100644 lib/page/home/widget/home_header.dart
create mode 100644 lib/page/home/widget/upload_panel.dart
create mode 100644 lib/page/profile/edit/data/state.dart
create mode 100644 lib/page/profile/edit/my_edit_page.dart
create mode 100644 lib/page/profile/edit/util/common.dart
create mode 100644 lib/page/profile/edit/widget/common.dart
create mode 100644 lib/page/profile/edit/widget/dietary_preferences.dart
create mode 100644 lib/page/profile/edit/widget/food_allergies.dart
create mode 100644 lib/page/profile/edit/widget/health_profile.dart
create mode 100644 lib/page/profile/my/my_page.dart
create mode 100644 lib/page/profile/my/widget/title_card.dart
create mode 100644 lib/page/profile/my/widget/user_card.dart
create mode 100644 lib/page/record/detail/record_detail_page.dart
create mode 100644 lib/page/record/detail/widget/detailed_analysis.dart
create mode 100644 lib/page/record/detail/widget/health_recommend.dart
create mode 100644 lib/page/record/detail/widget/result_chip.dart
create mode 100644 lib/page/record/list/record_list_page.dart
create mode 100644 lib/page/record/list/widget/record_list_card.dart
create mode 100644 lib/page/system/agree/agree_page.dart
create mode 100644 lib/page/system/login/login_code_page.dart
create mode 100644 lib/page/system/login/login_page.dart
create mode 100644 lib/page/system/login/widget/agreement_box.dart
create mode 100644 lib/page/system/login/widget/widget.dart
create mode 100644 lib/page/system/splash/splash_page.dart
create mode 100644 lib/providers/app_store.dart
create mode 100644 lib/router/config/route_paths.dart
create mode 100644 lib/router/config/route_type.dart
create mode 100644 lib/router/modules/base.dart
create mode 100644 lib/router/modules/serve.dart
create mode 100644 lib/router/routes.dart
create mode 100644 lib/utils/common.dart
create mode 100644 lib/utils/format.dart
create mode 100644 lib/widgets/common/app_backend.dart
create mode 100644 lib/widgets/common/app_header.dart
create mode 100644 lib/widgets/common/async_image.dart
create mode 100644 lib/widgets/ui_kit/button/custom_button.dart
create mode 100644 lib/widgets/ui_kit/empty/index.dart
create mode 100644 pubspec.lock
create mode 100644 pubspec.yaml
create mode 100644 test/widget_test.dart
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..79c113f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,45 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.build/
+.buildlog/
+.history
+.svn/
+.swiftpm/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.pub-cache/
+.pub/
+/build/
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
diff --git a/.metadata b/.metadata
new file mode 100644
index 0000000..652684f
--- /dev/null
+++ b/.metadata
@@ -0,0 +1,33 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: "077b4a4ce10a07b82caa6897f0c626f9c0a3ac90"
+ channel: "stable"
+
+project_type: app
+
+# Tracks metadata for the flutter migrate command
+migration:
+ platforms:
+ - platform: root
+ create_revision: 077b4a4ce10a07b82caa6897f0c626f9c0a3ac90
+ base_revision: 077b4a4ce10a07b82caa6897f0c626f9c0a3ac90
+ - platform: android
+ create_revision: 077b4a4ce10a07b82caa6897f0c626f9c0a3ac90
+ base_revision: 077b4a4ce10a07b82caa6897f0c626f9c0a3ac90
+ - platform: ios
+ create_revision: 077b4a4ce10a07b82caa6897f0c626f9c0a3ac90
+ base_revision: 077b4a4ce10a07b82caa6897f0c626f9c0a3ac90
+
+ # User provided section
+
+ # List of Local paths (relative to this file) that should be
+ # ignored by the migrate tool.
+ #
+ # Files that are not part of the templates will be ignored by default.
+ unmanaged_files:
+ - 'lib/main.dart'
+ - 'ios/Runner.xcodeproj/project.pbxproj'
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cd17729
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# food_health
+
+A new Flutter project.
+
+## Getting Started
+
+This project is a starting point for a Flutter application.
+
+A few resources to get you started if this is your first Flutter project:
+
+- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
+- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
+
+For help getting started with Flutter development, view the
+[online documentation](https://docs.flutter.dev/), which offers tutorials,
+samples, guidance on mobile development, and a full API reference.
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..88942d3
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,30 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+ # The lint rules applied to this project can be customized in the
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+ # included above or to enable additional rules. A list of all available lints
+ # and their documentation is published at https://dart.dev/lints.
+ #
+ # Instead of disabling a lint rule for the entire project in the
+ # section below, it can also be suppressed for a single line of code
+ # or a specific dart file by using the `// ignore: name_of_lint` and
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+ # producing the lint.
+ rules:
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
+formatter:
+ trailing_commas: preserve
\ No newline at end of file
diff --git a/android/.gitignore b/android/.gitignore
new file mode 100644
index 0000000..be3943c
--- /dev/null
+++ b/android/.gitignore
@@ -0,0 +1,14 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+.cxx/
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/to/reference-keystore
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts
new file mode 100644
index 0000000..cff86a5
--- /dev/null
+++ b/android/app/build.gradle.kts
@@ -0,0 +1,44 @@
+plugins {
+ id("com.android.application")
+ id("kotlin-android")
+ // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
+ id("dev.flutter.flutter-gradle-plugin")
+}
+
+android {
+ namespace = "com.curainhealth.food"
+ compileSdk = flutter.compileSdkVersion
+ ndkVersion = "27.0.12077973"
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+ }
+
+ kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_11.toString()
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId = "com.curainhealth.food"
+ // You can update the following values to match your application needs.
+ // For more information, see: https://flutter.dev/to/review-gradle-config.
+ minSdk = flutter.minSdkVersion
+ targetSdk = flutter.targetSdkVersion
+ versionCode = flutter.versionCode
+ versionName = flutter.versionName
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig = signingConfigs.getByName("debug")
+ }
+ }
+}
+
+flutter {
+ source = "../.."
+}
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..4d95910
--- /dev/null
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..280ea9f
--- /dev/null
+++ b/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/kotlin/com/xx/x/food_health/MainActivity.kt b/android/app/src/main/kotlin/com/xx/x/food_health/MainActivity.kt
new file mode 100644
index 0000000..d077f79
--- /dev/null
+++ b/android/app/src/main/kotlin/com/xx/x/food_health/MainActivity.kt
@@ -0,0 +1,5 @@
+package com.curainhealth.food
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity : FlutterActivity()
diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..c03a191
--- /dev/null
+++ b/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..0db4a83
--- /dev/null
+++ b/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..28ba998d6a546a08d60ff5f6a5f58d9806b1aafa
GIT binary patch
literal 3733
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%0Al>><
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
VF|dP~HDdq(002ovPDHLkV1f{%ie>-+
literal 0
HcmV?d00001
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..b19b6fcc62b233ec500780869a60f0a7384b815e
GIT binary patch
literal 9636
zcmV;VC0p8wP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006
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
literal 0
HcmV?d00001
diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..06952be
--- /dev/null
+++ b/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..cb1ef88
--- /dev/null
+++ b/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..4d95910
--- /dev/null
+++ b/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/android/build.gradle.kts b/android/build.gradle.kts
new file mode 100644
index 0000000..89176ef
--- /dev/null
+++ b/android/build.gradle.kts
@@ -0,0 +1,21 @@
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get()
+rootProject.layout.buildDirectory.value(newBuildDir)
+
+subprojects {
+ val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
+ project.layout.buildDirectory.value(newSubprojectBuildDir)
+}
+subprojects {
+ project.evaluationDependsOn(":app")
+}
+
+tasks.register("clean") {
+ delete(rootProject.layout.buildDirectory)
+}
diff --git a/android/gradle.properties b/android/gradle.properties
new file mode 100644
index 0000000..f018a61
--- /dev/null
+++ b/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..1ca3856
--- /dev/null
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.12-all.zip
diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts
new file mode 100644
index 0000000..ab39a10
--- /dev/null
+++ b/android/settings.gradle.kts
@@ -0,0 +1,25 @@
+pluginManagement {
+ val flutterSdkPath = run {
+ val properties = java.util.Properties()
+ file("local.properties").inputStream().use { properties.load(it) }
+ val flutterSdkPath = properties.getProperty("flutter.sdk")
+ require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
+ flutterSdkPath
+ }
+
+ includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
+
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+
+plugins {
+ id("dev.flutter.flutter-plugin-loader") version "1.0.0"
+ id("com.android.application") version "8.7.3" apply false
+ id("org.jetbrains.kotlin.android") version "2.1.0" apply false
+}
+
+include(":app")
diff --git a/assets/image/apple.png b/assets/image/apple.png
new file mode 100644
index 0000000000000000000000000000000000000000..26bec2615de5345b5eb65ebd83e6073e64aa39a7
GIT binary patch
literal 1117
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