Skip to content

Commit

Permalink
Merge pull request #7 from Sanotsu/refactor_and_perf
Browse files Browse the repository at this point in the history
merge:合并一些修改
  • Loading branch information
Sanotsu authored Dec 3, 2024
2 parents d87f623 + e4ec807 commit 09fa2ac
Show file tree
Hide file tree
Showing 144 changed files with 3,228 additions and 6,132 deletions.
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,13 @@ app.*.map.json
/android/app/profile
/android/app/release

# 暂时不关注ios的构建
# 暂时不关注其他的构建
ios
linux
macos
web
windows

**/_demos
**/_tests

Expand All @@ -67,4 +72,5 @@ ios
**/_old_readme/*

**bak*
**_bak*
**_self*
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,20 @@

All notable changes to this project will be documented in this file.

## 0.2.1-beta.1

- refactor:
- 饮食模块中 AI 大模型响应改为流式,可以更快看到结果输出
- 稍微简化了动作和食物的 json 文件导入
- chore:
- 升级到 flutter3.24.4,同步更新工具依赖库到最新
- 移除 Android 外其他平台环境内容
- fix:
- 修正饮食记录页面,指定餐次图片更新页面重复异动未按预期执行的问题
- 检查大部分地方的 setState 前是否已经挂载
- Card 的阴影样式稍微统一
- 减少了一些无意义的 print 输出

## 0.2.0-beta.1

- feat:
Expand Down
109 changes: 77 additions & 32 deletions _dev_logs/dev_records.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,83 @@

这是无关紧要的东西,记录一些开发过程中的细节,防止以为我忘记了。

- 2023-12-30 appbar 的 action 都优先 iconbutton

### 2024-11-12 起 重构小记

- perf: 基本就是清除 print 语句,检查 setState 前是否已经挂载,Card 的阴影大小,Padding 的边距值大小,和少量的 bug 修复。

#### 2024-12-03

- refactor: 重构调用大模型 API 为流式响应。

#### 2024-12-02

- 饮食大模块

#### 2024-11-26

- 我的模块

#### 2024-11-16

- 训练日志的导出模块

#### 2024-11-15

- exercise 动作模块
- workout 训练模块
- plan 计划模块

#### 2024-11-13

- 手记模块
- 锻炼首页、饮食首页

### 2024-11-11

#### 升级 flutter 版本,更新兼容依赖

```sh
$ flutter --version
Flutter 3.24.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 603104015d (2 周前) • 2024-10-24 08:01:25 -0700
Engine • revision db49896cf2
Tools • Dart 3.5.4 • DevTools 2.37.3
```

### 2024-07-12

- fix:修正较新版本 Android 下存储权限未正常获取的问题.
- feat:添加了对饮食模块下“餐食相册”和“饮食日记”页面中指定餐次的食物图片,进行“AI 分析”的功能。

#### 餐食相册的备份还原

问题描述:

- 因为餐次的照片的上传是使用`FormBuilderFilePicker`实现的,底层是`file_picker`,实际是把图片缓存到了该库默认的位置,类似`/data/user/0/com.swm.free_fitness/cache/file_picker/菜品识别1.jpg`
- 所以在重新安装 app,再恢复饮食日志的时候,餐次图片的地址就是上述缓存的位置;
- 但由于卸载了 app,应用缓存的数据都丢了,也就无法再看到餐次图片了,那这个图片地址的备份实际没有作用了;
- 当然,食物摄入量等其他信息不受影响。

TODO 思路:

- 第一种:
- 上传时,把图片文件存入 db;
- 展示、备份恢复等直接处理图片文件数据
- 第二种:
- 上传时,依旧把图片放到`FormBuilderFilePicker`的默认到缓存中;
- 备份时,把图片文件从缓存中获取(比如存为单独的图片 zip),连同 db 中的其他导出的 json 数据一起备份到压缩包;
- 恢复时,把图片放到缓存路径,然后把 json 数据中的图片地址替换为缓存路径;
- 第三种(预计使用这种**就跟导入基础动作的图片一样**,但同样的问题有 2:1 权限、2 直接在文件管理器中误删):
- 上传时,把图片放到外部路径,卸载 app 不删除图片缓存;
- 展示、备份恢复等使用外部存储的路径;
- 现在上传的餐食图片会保留在`/storage/emulated/0/FREE-FITNESS/MealPhotos`,应用卸载后该位置的图片也不会被删除。

### 2024-07-08

- feat:添加了 dio http client 的自定义封装;添加在“饮食”-“饮食日记”页面中“AI 对话助手”功能。

### 2024-07-06

#### 升级 flutter 版本,更新兼容依赖
Expand Down Expand Up @@ -544,38 +621,6 @@ dart devtools --appSizeBase=apk-code-size-analysis_09.json

</details>

### 2024-07-08

- feat:添加了 dio http client 的自定义封装;添加在“饮食”-“饮食日记”页面中“AI 对话助手”功能。

### 2024-07-12

- fix:修正较新版本 Android 下存储权限未正常获取的问题.
- feat:添加了对饮食模块下“餐食相册”和“饮食日记”页面中指定餐次的食物图片,进行“AI 分析”的功能。

#### 餐食相册的备份还原

问题描述:

- 因为餐次的照片的上传是使用`FormBuilderFilePicker`实现的,底层是`file_picker`,实际是把图片缓存到了该库默认的位置,类似`/data/user/0/com.swm.free_fitness/cache/file_picker/菜品识别1.jpg`
- 所以在重新安装 app,再恢复饮食日志的时候,餐次图片的地址就是上述缓存的位置;
- 但由于卸载了 app,应用缓存的数据都丢了,也就无法再看到餐次图片了,那这个图片地址的备份实际没有作用了;
- 当然,食物摄入量等其他信息不受影响。

TODO 思路:

- 第一种:
- 上传时,把图片文件存入 db;
- 展示、备份恢复等直接处理图片文件数据
- 第二种:
- 上传时,依旧把图片放到`FormBuilderFilePicker`的默认到缓存中;
- 备份时,把图片文件从缓存中获取(比如存为单独的图片 zip),连同 db 中的其他导出的 json 数据一起备份到压缩包;
- 恢复时,把图片放到缓存路径,然后把 json 数据中的图片地址替换为缓存路径;
- 第三种(预计使用这种**就跟导入基础动作的图片一样**,但同样的问题有 2:1 权限、2 直接在文件管理器中误删):
- 上传时,把图片放到外部路径,卸载 app 不删除图片缓存;
- 展示、备份恢复等使用外部存储的路径;
- 现在上传的餐食图片会保留在`/storage/emulated/0/FREE-FITNESS/MealPhotos`,应用卸载后该位置的图片也不会被删除。

### TODO

- i18n 的中英文不全,很多地方使用的是` box.read('language') == "en" ? "AI analysis" : 'AI分析',`投机方式,如果系统就是英文那显示的还是中文。
31 changes: 19 additions & 12 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,27 @@ def keystorePropertiesFile = rootProject.file('key.properties')

android {
namespace "com.swm.free_fitness"
compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion
// compileSdkVersion flutter.compileSdkVersion
// 安卓14(API 34) - java17 - AGP8
compileSdkVersion 34
// ndkVersion flutter.ndkVersion
ndkVersion = "26.1.10909125"

// 2024-11-16 升级到java 17
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
// sourceCompatibility JavaVersion.VERSION_1_8
// targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}

kotlinOptions {
// jvmTarget = '1.8'
jvmTarget = '17'
}

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}

// 在构建应用时打包压缩的原生库
Expand All @@ -48,14 +63,6 @@ android {
}
}

kotlinOptions {
jvmTarget = '1.8'
}

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}

defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.swm.free_fitness"
Expand Down
3 changes: 2 additions & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
# distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
distributionUrl = https\://services.gradle.org/distributions/gradle-8.7-all.zip
14 changes: 9 additions & 5 deletions android/settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,15 @@ pluginManagement {

plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
// id "org.jetbrains.kotlin.android" version "1.7.10" apply false
// 有些库需要更新的kotlin版本
// https://stackoverflow.com/questions/70919127/your-project-requires-a-newer-version-of-the-kotlin-gradle-plugin-android-stud
id "org.jetbrains.kotlin.android" version "2.0.0" apply false
// id "com.android.application" version "7.3.0" apply false
// // id "org.jetbrains.kotlin.android" version "1.7.10" apply false
// // 有些库需要更新的kotlin版本
// // https://stackoverflow.com/questions/70919127/your-project-requires-a-newer-version-of-the-kotlin-gradle-plugin-android-stud
// id "org.jetbrains.kotlin.android" version "2.0.0" apply false

id 'com.android.application' version '8.6.0' apply false
id 'com.android.library' version '8.6.0' apply false
id 'org.jetbrains.kotlin.android' version '2.0.20' apply false
}

include ":app"
Loading

0 comments on commit 09fa2ac

Please sign in to comment.