Compare commits

..

70 Commits

Author SHA1 Message Date
豌杂 197eae3079 ios 打包 2025-12-19 17:49:04 +08:00
豌杂 8fd0303427 添加Mac环境打包脚本 2025-12-19 16:44:27 +08:00
豌杂 122dfd6542 修复苹果登陆不能输入非数字,优化升级插件 2025-12-19 16:29:55 +08:00
豌杂 d125a2b470 处理IOS密码不能输入非数字的内容 2025-12-18 13:57:19 +08:00
DESKTOP-I3JPKHK\wy 7f3961c8ea 1 2025-10-10 15:18:26 +08:00
DESKTOP-I3JPKHK\wy 2545e4e314 windows 更新 2025-10-10 14:46:06 +08:00
豌杂 1a157ffc6f IOS版本号升级 2025-09-30 11:18:48 +08:00
DESKTOP-I3JPKHK\wy 4161a9fcc8 优化顶部打分bar 和 number 打分栏的rebuild 性能优化 2025-09-30 11:11:51 +08:00
DESKTOP-I3JPKHK\wy 2ac88000cc 移除高频 print 日志 2025-09-29 17:30:47 +08:00
DESKTOP-I3JPKHK\wy c7afafc3aa feat(homework_review): 优化批注绘制与坐标换算,提升交互流畅度
- 批注绘制改为 Path 聚合一次性绘制
- 移除高频 print,开启 CustomPaint isComplex/willChange
- 无变换时跳过逆矩阵
- 回滚不必要的 RepaintBoundary/低过滤
- 调整 Path 判空判断写法
2025-09-29 17:22:54 +08:00
DESKTOP-I3JPKHK\wy 1fc54d7526 补充提交 2025-09-29 13:39:37 +08:00
DESKTOP-I3JPKHK\wy e96429fe05 11111 2025-09-29 09:29:28 +08:00
DESKTOP-I3JPKHK\wy f050263ddf 终于解决了这个切换试题放大的内容乱跑的问题(更新视图zoomController位置重置时机应在key重新后,不该在前,被覆盖) 2025-09-28 18:07:50 +08:00
DESKTOP-I3JPKHK\wy bac6a7410a 版本更新 1.0.6+7 2025-09-23 16:31:24 +08:00
DESKTOP-I3JPKHK\wy 10025b49ee 修复部分代码 2025-09-23 16:16:59 +08:00
DESKTOP-I3JPKHK\wy c6409b095c 修复BUG和使用更新APP插件 2025-09-22 16:44:53 +08:00
DESKTOP-I3JPKHK\wy f638ef23de 补充提交,修复留白区域笔迹问题 2025-09-15 15:31:46 +08:00
DESKTOP-I3JPKHK\wy 8fd6c57874 Merge branch 'mcy_new' 2025-09-12 14:00:16 +08:00
DESKTOP-I3JPKHK\wy db04323e36 修复升级后的BUG 2025-09-11 17:23:14 +08:00
DESKTOP-I3JPKHK\wy e34234da09 补充提交处理BUG 2025-09-11 17:15:15 +08:00
DESKTOP-I3JPKHK\wy 8209b12459 补充提交 2025-09-11 14:38:22 +08:00
DESKTOP-I3JPKHK\wy b7478fd785 修复全部BUG 2025-09-11 14:25:23 +08:00
DESKTOP-I3JPKHK\wy b6af1f57a4 修复优化页面,修复部分问题。暂时提交 2025-09-10 16:49:25 +08:00
DESKTOP-I3JPKHK\wy 70f658f87d 优化完成批阅试图和视图视图滚动条联动 2025-09-09 15:58:30 +08:00
wangyang 5f4c9237c1 Merge pull request 'mcy_new' (#1) from mcy_new into master
Reviewed-on: #1
2025-08-28 10:10:44 +08:00
DESKTOP-I3JPKHK\wy 6252f930e1 111 2025-04-30 16:47:08 +08:00
DESKTOP-I3JPKHK\wy 951175a5cc 添加继续批阅按钮的 顺序批阅逻辑 2025-04-30 16:27:22 +08:00
DESKTOP-I3JPKHK\wy 4919e72008 处理启动图和批阅流程无法选择打分问题 2025-04-30 14:14:30 +08:00
DESKTOP-I3JPKHK\wy 0d2b3d6934 空试题 检验 2025-04-28 17:50:09 +08:00
DESKTOP-I3JPKHK\wy ef2684ca5d 优化批阅升级流程 2025-04-28 15:11:57 +08:00
豌杂 57ec197956 更改IOS APP 图标 2025-04-27 16:57:58 +08:00
豌杂 ba2a5bad2e 更改IOS APP 图标 2025-04-27 16:57:27 +08:00
豌杂 55692c2686 跟随IOS版本 2025-04-27 15:07:40 +08:00
豌杂 1ebdbf101a 安卓才判断双指校验 2025-04-25 17:49:38 +08:00
DESKTOP-I3JPKHK\wy 4d42562508 Merge branch 'mcy_new' of https://gitea.23544.com/marking/Making.School.Asignment.app into mcy_new 2025-04-25 17:00:15 +08:00
DESKTOP-I3JPKHK\wy 05b308b612 1111 2025-04-25 17:00:07 +08:00
machuanyu 5bf70505ed Merge remote-tracking branch 'origin/mcy_new' into mcy_new 2025-04-25 15:59:01 +08:00
machuanyu c2dd9171b9 班级排名修改 2025-04-25 15:58:52 +08:00
DESKTOP-I3JPKHK\wy d904eb33c4 补充提交 2025-04-25 15:36:35 +08:00
DESKTOP-I3JPKHK\wy 3a3458f34e 补充提交 2025-04-25 15:32:32 +08:00
DESKTOP-I3JPKHK\wy 0902c0cd0d 解决多指批注问题 2025-04-25 15:31:23 +08:00
豌杂 4b65ef1e88 123 2025-04-25 10:34:41 +08:00
豌杂 3171ba215f 苹果测试员账号跳过更新 2025-04-25 10:34:01 +08:00
DESKTOP-I3JPKHK\wy f79baf3a5e 123 2025-04-24 17:39:26 +08:00
DESKTOP-I3JPKHK\wy 4a03e92468 Merge branch 'mcy_new' of https://gitea.23544.com/marking/Making.School.Asignment.app into mcy_new 2025-04-24 15:11:21 +08:00
DESKTOP-I3JPKHK\wy a35f8f5572 111 2025-04-24 15:11:12 +08:00
machuanyu 7c5ef98014 答题时长修改 2025-04-24 14:59:33 +08:00
DESKTOP-I3JPKHK\wy f677fa4032 记住密码无效问题 2025-04-24 13:48:10 +08:00
DESKTOP-I3JPKHK\wy 6c3669350b 111 2025-04-24 11:52:07 +08:00
DESKTOP-I3JPKHK\wy 33996285f4 处理BUG 2025-04-24 11:43:07 +08:00
machuanyu 158fbc355f bug修改 2025-04-23 17:51:17 +08:00
DESKTOP-I3JPKHK\wy 9d2f15c80c 批阅页面修改 2025-04-23 15:27:27 +08:00
machuanyu a8d0e80555 -- 2025-04-23 14:49:07 +08:00
machuanyu bd8ef8bb57 Merge remote-tracking branch 'origin/mcy_new' into mcy_new 2025-04-23 14:48:22 +08:00
machuanyu 87bc2931c3 作业报告客观题增加作答率弹框 2025-04-23 14:48:14 +08:00
DESKTOP-I3JPKHK\wy 393b2ee578 补充提交 2025-04-22 18:38:11 +08:00
DESKTOP-I3JPKHK\wy 08cf62a845 打分BUG处理 2025-04-22 18:01:28 +08:00
DESKTOP-I3JPKHK\wy 6011f52a19 完成登陆页面添加协议引导,和批阅页面添加空白图上传 2025-04-22 14:45:58 +08:00
machuanyu 9d760da027 待批阅分页 2025-04-22 11:00:48 +08:00
DESKTOP-I3JPKHK\wy 094f0385dc 111 2025-04-21 17:43:33 +08:00
DESKTOP-I3JPKHK\wy 344fe4757d 111 2025-04-21 17:20:18 +08:00
DESKTOP-I3JPKHK\wy dfcb9adcbc 111 2025-04-21 17:13:55 +08:00
DESKTOP-I3JPKHK\wy a1a2389411 无法联动 滑动 2025-04-21 16:46:48 +08:00
DESKTOP-I3JPKHK\wy 00af849b1f 解决三键导航 阻挡全屏批阅问题 2025-04-21 16:30:41 +08:00
DESKTOP-I3JPKHK\wy 9e24bf5747 1111 2025-04-21 16:05:00 +08:00
DESKTOP-I3JPKHK\wy 7d6190040a 处理全部弹窗没有弹出 2025-04-21 15:28:36 +08:00
DESKTOP-I3JPKHK\wy 3f9661436d 处理图片尺寸并且完成批阅部分优化 2025-04-21 11:49:24 +08:00
1147192855@qq.com 138b4bb767 处理上传图片的问题 2025-04-19 21:46:37 +08:00
1147192855@qq.com ed30fc6240 完善X轴 缩小倍数问题 2025-04-19 21:20:35 +08:00
1147192855@qq.com 25029477cd 完成dy部分问题 2025-04-19 17:20:47 +08:00
192 changed files with 5928 additions and 4069 deletions

View File

@ -0,0 +1,3 @@
{
"flutter": "3.32.0"
}

View File

@ -5,9 +5,11 @@
*.swp *.swp
.DS_Store .DS_Store
.atom/ .atom/
.build/
.buildlog/ .buildlog/
.history .history
.svn/ .svn/
.swiftpm/
migrate_working_dir/ migrate_working_dir/
# IntelliJ related # IntelliJ related
@ -42,3 +44,6 @@ app.*.map.json
/android/app/debug /android/app/debug
/android/app/profile /android/app/profile
/android/app/release /android/app/release
# FVM Version Cache
.fvm/

View File

@ -0,0 +1,3 @@
{
"dart.flutterSdkPath": ".fvm/versions/3.32.0"
}

View File

@ -35,6 +35,11 @@ android {
compileOptions { compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8 sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8
coreLibraryDesugaringEnabled true
}
kotlinOptions {
jvmTarget = "1.8"
} }
signingConfigs { signingConfigs {
@ -80,8 +85,14 @@ android {
shrinkResources false // shrinkResources false //
} }
} }
} }
flutter { flutter {
source = "../.." source = "../.."
} }
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' //
}

View File

@ -4,6 +4,7 @@
android:name="${applicationName}" android:name="${applicationName}"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:enableOnBackInvokedCallback="true"> android:enableOnBackInvokedCallback="true">
<!-- windowTranslucentStatus 设置顶部状态栏使用-->
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
@ -12,6 +13,7 @@
android:theme="@style/LaunchTheme" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:windowTranslucentStatus="true"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as <!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user the Android process has started. This theme is visible to the user
@ -38,7 +40,7 @@
android:name="flutterEmbedding" android:name="flutterEmbedding"
android:value="2"/> android:value="2"/>
<!-- Provider --> <!-- Provider -->
<provider <!-- <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileProvider" android:authorities="${applicationId}.fileProvider"
android:exported="false" android:exported="false"
@ -46,6 +48,16 @@
<meta-data <meta-data
android:name="android.support.FILE_PROVIDER_PATHS" android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/> android:resource="@xml/file_paths"/>
</provider> -->
<!-- ✅ FileProvider 配置 - 这是必需的! -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider> </provider>
</application> </application>
<!-- 访问电话状态 --> <!-- 访问电话状态 -->
@ -75,25 +87,21 @@
<!-- 屏幕常亮权限 --> <!-- 屏幕常亮权限 -->
<uses-permission <uses-permission
android:name="android.permission.WAKE_LOCK"/> android:name="android.permission.WAKE_LOCK"/>
<uses-permission <!-- <uses-permission
android:name="android.permission.CAMERA"/> android:name="android.permission.CAMERA"/> -->
<!-- Permissions options for the `access notification policy` group --> <!-- Permissions options for the `access notification policy` group -->
<uses-permission <uses-permission
android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/> android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
<!-- Permissions options for the `notification` group --> <!-- Permissions options for the `notification` group -->
<uses-permission <uses-permission
android:name="android.permission.POST_NOTIFICATIONS"/> android:name="android.permission.POST_NOTIFICATIONS"/>
<!-- Required to query activities that can process text, see: <!-- 注释掉文本处理权限,避免不必要的剪切板访问 -->
https://developer.android.com/training/package-visibility and <!-- <queries>
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent> <intent>
<action <action
android:name="android.intent.action.PROCESS_TEXT"/> android:name="android.intent.action.PROCESS_TEXT"/>
<data <data
android:mimeType="text/plain"/> android:mimeType="text/plain"/>
</intent> </intent>
</queries> </queries> -->
</manifest> </manifest>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 B

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 B

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -3,8 +3,8 @@
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on --> <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:forceDarkAllowed">false</item> <item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item> <item name="android:windowFullscreen">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:windowSplashScreenBackground">#FFFFFF</item> <item name="android:windowSplashScreenBackground">#FFFFFF</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item> <item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>

View File

@ -6,8 +6,8 @@
the Flutter engine draws its first frame --> the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item> <item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:forceDarkAllowed">false</item> <item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item> <item name="android:windowFullscreen">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style> </style>
<!-- Theme applied to the Android Window as soon as the process has started. <!-- Theme applied to the Android Window as soon as the process has started.

View File

@ -3,8 +3,8 @@
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:forceDarkAllowed">false</item> <item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item> <item name="android:windowFullscreen">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:windowSplashScreenBackground">#FFFFFF</item> <item name="android:windowSplashScreenBackground">#FFFFFF</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item> <item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>

View File

@ -6,8 +6,8 @@
the Flutter engine draws its first frame --> the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item> <item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:forceDarkAllowed">false</item> <item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item> <item name="android:windowFullscreen">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style> </style>
<!-- Theme applied to the Android Window as soon as the process has started. <!-- Theme applied to the Android Window as soon as the process has started.

View File

@ -1,5 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<paths> <paths xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 外部存储 -->
<external-path name="external_files" path="." />
<!-- 应用内部存储 -->
<files-path name="files" path="." />
<!-- 缓存目录 -->
<cache-path name="cache" path="." />
<!-- 外部缓存 -->
<external-cache-path name="external_cache" path="." />
<!-- 下载目录 -->
<external-path name="downloads" path="Download/" />
<!-- 如果你已有其他配置,请保留它们 -->
<external-path path="Android/data/com.yuanxuan.making_school_asignment_app/" name="files_root" /> <external-path path="Android/data/com.yuanxuan.making_school_asignment_app/" name="files_root" />
<external-path path="." name="external_storage_root" /> <external-path path="." name="external_storage_root" />
</paths> </paths>

View File

@ -30,8 +30,8 @@
<!-- 屏幕常亮权限 --> <!-- 屏幕常亮权限 -->
<uses-permission <uses-permission
android:name="android.permission.WAKE_LOCK"/> android:name="android.permission.WAKE_LOCK"/>
<uses-permission <!-- <uses-permission
android:name="android.permission.CAMERA"/> android:name="android.permission.CAMERA"/> -->
<!-- Permissions options for the `access notification policy` group --> <!-- Permissions options for the `access notification policy` group -->
<uses-permission <uses-permission
android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/> android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>

View File

@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.6.3-all.zip distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.10.2-all.zip

View File

@ -18,8 +18,8 @@ pluginManagement {
plugins { plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false id "com.android.application" version "8.8.0" apply false
id "org.jetbrains.kotlin.android" version "1.7.10" apply false id "org.jetbrains.kotlin.android" version "1.8.22" apply false
} }
include ":app" include ":app"

View File

@ -29,7 +29,7 @@
type="application/octet-stream" /> type="application/octet-stream" />
</item> --> </item> -->
<item> <item>
<title>Version 1.0.3+4</title> <title>Version 1.0.7+8</title>
#发行说明-读取html方式(2选1) #发行说明-读取html方式(2选1)
<!-- <sparkle:releaseNotesLink> <!-- <sparkle:releaseNotesLink>
https://your_domain/your_path/release_notes.html https://your_domain/your_path/release_notes.html
@ -39,16 +39,15 @@
<![CDATA[ <![CDATA[
<ul> <ul>
<li>1、修复已知BUG</li> <li>1、修复已知BUG</li>
<li>2、优化操作布局</li> <li>2、添加缩放布局和批阅书写</li>
</ul> </ul>
]]> ]]>
</description> </description>
<pubDate>Fri, 14 Mar 2025 12:00:00 +0800</pubDate> <pubDate>Tue, 30 Sep 2025 14:09:13 +0800</pubDate>
#你更新程序的地址 #你更新程序的地址
<enclosure url="https://dpc-job-oss.23544.com/infra-app/making_school_asignment_app/1.0.3/3/making_school_asignment_app-1.0.3+4-windows-setup.exe" <enclosure url="https://dpc-job-oss.23544.com/infra-app/making_school_asignment_app/1.0.7/3/making_school_asignment_app-1.0.7+8-windows-setup.exe"
sparkle:dsaSignature="MEYCIQCuU0BodcdWrF+WoJrWRpY8P1pfK+dKkvrl3ZJ5KxnDdAIhAIWqp7VBNO9IaKFj2ypQ+s7DWurBUSaf6MTvexMmuvX+" sparkle:dsaSignature="MEUCIQCwWC4fKrn/dfdH6uzX4Sssv7G6XVgvwjQLklrTM6+cBQIgZDY4INHcwuxrsIREuPQeTvQL4j0mvF9qPQfppjRSgsg=" length="0"
length="0" sparkle:version="1.0.7+8"
sparkle:version="1.0.3+4"
sparkle:os="windows" sparkle:os="windows"
type="application/octet-stream" /> type="application/octet-stream" />
</item> </item>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 KiB

View File

@ -0,0 +1,109 @@
@echo off
SETLOCAL EnableDelayedExpansion
:: 设置 UTF-8 代码页以支持中文显示
chcp 65001 > nul
:: 获取项目根目录
for %%I in ("%~dp0.") do set "PROJECT_DIR=%%~fI"
:: 1. 强制终止所有Java进程Gradle相关
echo Terminating processes...
taskkill /f /im java.exe 2>nul
taskkill /f /im gradlew.exe 2>nul
timeout /t 2 /nobreak >nul
:: 修复后的Flutter构建脚本
echo Running flutter clean...
call flutter clean
if !ERRORLEVEL! neq 0 (
echo flutter clean failed with error: !ERRORLEVEL!
pause
exit /b 1
)
:: 3. 强制删除构建目录(带重试机制)
echo Removing residual files
call :ForceDelete "build"
call :ForceDelete ".dart_tool"
call :ForceDelete "pubspec.lock"
echo Running flutter pub get...
call flutter pub get
if !ERRORLEVEL! neq 0 (
echo flutter pub get failed with error: !ERRORLEVEL!
pause
exit /b 1
)
echo Running build_runner...
call flutter packages pub run build_runner build --delete-conflicting-outputs
if !ERRORLEVEL! neq 0 (
echo build_runner failed with error: !ERRORLEVEL!
pause
exit /b 1
)
echo Building release APK...
call flutter build apk --release
if !ERRORLEVEL! neq 0 (
echo APK build failed with error: !ERRORLEVEL!
pause
exit /b 1
)
:: 新增打开APK所在文件夹
echo Opening APK directory
if exist "build\app\outputs\flutter-apk\" (
explorer "build\app\outputs\flutter-apk\"
) else (
echo APK directory does not exist
)
echo.
echo All steps completed successfully!
echo APK file generated at: %PROJECT_DIR%\build\app\outputs\flutter-apk\
echo.
timeout /t 3 /nobreak >nul
exit /b 0
:: 函数区 -------------------------------------------------
:ForceDelete
setlocal
set "target=%~1"
set "max_retries=3"
set "retry_delay=1"
:: 检查目标是否存在
if not exist "%target%" (
endlocal
goto :eof
)
:: 尝试多次删除
for /l %%i in (1,1,%max_retries%) do (
echo Attempting to delete %target% (try %%i of %max_retries%)
:: 先尝试删除文件
del /f /q /s "%target%\*" 2>nul
:: 再尝试删除目录
rmdir /s /q "%target%" 2>nul
:: 检查是否删除成功
if not exist "%target%" (
echo Successfully deleted %target%
endlocal
goto :eof
)
:: 如果未成功,等待后重试
if %%i lss %max_retries% (
timeout /t %retry_delay% /nobreak >nul
set /a retry_delay*=2 :: 指数退避策略
)
)
:: 如果所有尝试都失败
echo Warning: Could not completely delete %target%, some files may be in use
endlocal
goto :eof

View File

@ -0,0 +1,159 @@
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
# Ensure UTF-8 locale for macOS terminals
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# Resolve project directory (script location)
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "Project dir: $PROJECT_DIR"
# To save credentials in macOS Keychain for non-interactive uploads, run:
# security add-generic-password -s "TransporterCredentials" -w "you@example.com:app-specific-password" -a transporter -U
# The script will read that item and expect the stored password string in the form: "APPLE_ID:APPLE_PASSWORD"
force_delete() {
local target="$1"
local max_retries=3
local retry_delay=1
if [ ! -e "$PROJECT_DIR/$target" ]; then
return 0
fi
for i in $(seq 1 $max_retries); do
echo "Attempting to delete $target (try $i of $max_retries)"
rm -rf "$PROJECT_DIR/$target" 2>/dev/null || true
if [ ! -e "$PROJECT_DIR/$target" ]; then
echo "Successfully deleted $target"
return 0
fi
if [ "$i" -lt "$max_retries" ]; then
sleep $retry_delay
retry_delay=$((retry_delay * 2))
fi
done
echo "Warning: Could not completely delete $target, some files may be in use"
return 1
}
cd "$PROJECT_DIR"
echo "Running flutter clean..."
if ! flutter clean; then
echo "flutter clean failed"
exit 1
fi
echo "Removing residual files"
force_delete build || true
force_delete .dart_tool || true
force_delete pubspec.lock || true
echo "Running flutter pub get..."
if ! flutter pub get; then
echo "flutter pub get failed"
exit 1
fi
echo "Running build_runner (if present)..."
if ! flutter packages pub run build_runner build --delete-conflicting-outputs; then
echo "build_runner failed or not present — continuing"
fi
echo "Building iOS IPA (verbose)..."
if ! flutter build ipa --release --verbose; then
echo "IPA build failed"
exit 1
fi
# Try to find the generated .ipa (searching under build/)
IPA_PATH="$(find "$PROJECT_DIR/build" -type f -name '*.ipa' -print -quit || true)"
if [ -z "$IPA_PATH" ]; then
echo "No .ipa found in build output"
echo "Build finished but no IPA to upload. Exiting."
exit 0
fi
echo "Found IPA: $IPA_PATH"
# Upload via Transporter (if installed). Prefer environment vars APPLE_ID and APPLE_PASSWORD (app-specific password).
ITMS_TRANSPORTER="/Applications/Transporter.app/Contents/itms/bin/iTMSTransporter"
if [ -x "$ITMS_TRANSPORTER" ]; then
echo "Using Transporter at $ITMS_TRANSPORTER"
# Read credentials from env, then try macOS Keychain, otherwise prompt
if [ -z "${APPLE_ID:-}" ] || [ -z "${APPLE_PASSWORD:-}" ]; then
# Try to read combined credentials from Keychain (service: TransporterCredentials)
if command -v security >/dev/null 2>&1; then
KC_PAIR="$(security find-generic-password -s "TransporterCredentials" -w 2>/dev/null || true)"
if [ -n "$KC_PAIR" ]; then
# Expect stored value in form: appleid:app-specific-password
APPLE_ID="${KC_PAIR%%:*}"
APPLE_PASSWORD="${KC_PAIR#*:}"
if [ -n "${APPLE_ID}" ] && [ -n "${APPLE_PASSWORD}" ]; then
echo "Credentials loaded from Keychain (service: TransporterCredentials)."
else
# clear if parsing failed
APPLE_ID=""
APPLE_PASSWORD=""
fi
fi
fi
if [ -z "${APPLE_ID:-}" ] || [ -z "${APPLE_PASSWORD:-}" ]; then
echo "Provide App Store Connect credentials for upload. You can set APPLE_ID and APPLE_PASSWORD (app-specific password) in the environment or save a keychain item named 'TransporterCredentials' to avoid prompts."
read -p "Apple ID (email): " APPLE_ID
read -s -p "App-specific password (will not echo): " APPLE_PASSWORD
echo
fi
fi
echo "Uploading $IPA_PATH to App Store Connect (this may take a while)..."
# Try transporter with a small retry loop
UPLOAD_EXIT=0
MAX_UPLOAD_TRIES=2
for try in $(seq 1 $MAX_UPLOAD_TRIES); do
echo "Transporter upload attempt $try of $MAX_UPLOAD_TRIES..."
if "$ITMS_TRANSPORTER" -m upload -u "$APPLE_ID" -p "$APPLE_PASSWORD" -f "$IPA_PATH"; then
echo "Upload succeeded"
UPLOAD_EXIT=0
break
else
UPLOAD_EXIT=$?
echo "Transporter upload attempt $try failed (exit $UPLOAD_EXIT)"
# small delay before retry
sleep $((try * 2))
fi
done
if [ $UPLOAD_EXIT -ne 0 ]; then
echo "Transporter upload failed after $MAX_UPLOAD_TRIES attempts (exit $UPLOAD_EXIT)."
echo "Opening Transporter app so you can upload the IPA manually..."
# Try to open Transporter GUI with the IPA as argument (may import the file)
if command -v open >/dev/null 2>&1; then
if open -a Transporter "$IPA_PATH" 2>/dev/null; then
echo "Transporter app opened. Please complete the upload there."
else
echo "Failed to open Transporter with the IPA. Opening Transporter app without file..."
open -a Transporter || true
echo "Transporter opened. Please drag the IPA ($IPA_PATH) into the app to upload."
fi
else
echo "Cannot open Transporter GUI: 'open' command not found. Please upload IPA manually: $IPA_PATH"
fi
# Do not exit with error here so the script can finish and user can manually complete upload
fi
else
echo "Transporter not found at $ITMS_TRANSPORTER. Please install Transporter app from the Mac App Store or upload the IPA manually."
echo "IPA path: $IPA_PATH"
fi
echo "All steps completed successfully!"
echo "IPA: $IPA_PATH"
exit 0

View File

@ -5,12 +5,15 @@ flutter_native_splash:
# 如需恢复默认的白屏,执行如下命令 # 如需恢复默认的白屏,执行如下命令
# flutter pub run flutter_native_splash:remove # flutter pub run flutter_native_splash:remove
# 设置闪屏页的默认态logo或背景图片路径 # 设置闪屏页的默认态logo或背景图片路径
color: "#FFFFFF" background_image: assets/images/splash_native.png
image_ios: assets/images/splash_native.png
background_image_android: assets/images/splash_native.png # 全屏模式
fullscreen: true
android_12: android_12:
image: assets/images/splash2.png color: "#FFFFFF"
image: assets/images/logo_splash.png
android: true android: true
ios: true ios: true
android_gravity: fill # android_gravity: clip_vertical
ios_content_mode: scaleToFill # ios_content_mode: scaleToFill

View File

@ -21,6 +21,6 @@
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.0</string> <string>1.0</string>
<key>MinimumOSVersion</key> <key>MinimumOSVersion</key>
<string>12.0</string> <string>13.0</string>
</dict> </dict>
</plist> </plist>

View File

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project # Uncomment this line to define a global platform for your project
# platform :ios, '12.0' # platform :ios, '13.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency. # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true' ENV['COCOAPODS_DISABLE_STATS'] = 'true'

View File

@ -477,9 +477,10 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES; VALIDATE_PRODUCT = YES;
@ -495,7 +496,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 6; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = Z778GC45N8; DEVELOPMENT_TEAM = Z778GC45N8;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@ -503,7 +504,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 3; MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = "com.yuanxuan.makingS--buneng--choolAsignmentApp"; PRODUCT_BUNDLE_IDENTIFIER = "com.yuanxuan.makingS--buneng--choolAsignmentApp";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@ -524,7 +525,7 @@
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp.RunnerTests;
@ -542,7 +543,7 @@
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = Z778GC45N8; DEVELOPMENT_TEAM = Z778GC45N8;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
@ -559,7 +560,7 @@
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp.RunnerTests;
@ -619,10 +620,11 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
}; };
name = Debug; name = Debug;
@ -671,9 +673,10 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0; IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule; SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_OPTIMIZATION_LEVEL = "-O";
@ -689,7 +692,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 6; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = Z778GC45N8; DEVELOPMENT_TEAM = Z778GC45N8;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@ -697,7 +700,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 3; MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp; PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@ -719,7 +722,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/RunnerRelease.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/RunnerRelease.entitlements;
CURRENT_PROJECT_VERSION = 6; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = Z778GC45N8; DEVELOPMENT_TEAM = Z778GC45N8;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@ -727,7 +730,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 3; MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp; PRODUCT_BUNDLE_IDENTIFIER = com.yuanxuan.makingSchoolAsignmentApp;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";

View File

@ -26,6 +26,7 @@
buildConfiguration = "Debug" buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES"> shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion> <MacroExpansion>
<BuildableReference <BuildableReference
@ -54,11 +55,13 @@
buildConfiguration = "Debug" buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
launchStyle = "0" launchStyle = "0"
useCustomWorkingDirectory = "NO" useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO" ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES" debugDocumentVersioning = "YES"
debugServiceExtension = "internal" debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES"> allowLocationSimulation = "YES">
<BuildableProductRunnable <BuildableProductRunnable
runnableDebuggingMode = "0"> runnableDebuggingMode = "0">

View File

@ -1,7 +1,7 @@
import Flutter import Flutter
import UIKit import UIKit
@UIApplicationMain @main
@objc class AppDelegate: FlutterAppDelegate { @objc class AppDelegate: FlutterAppDelegate {
override func application( override func application(
_ application: UIApplication, _ application: UIApplication,

View File

@ -1,122 +1,158 @@
{ {
"images": [ "images": [
{ {
"filename": "Icon-App-20x20@2x.png", "size": "20x20",
"idiom": "iphone", "idiom": "iphone",
"scale": "2x", "filename": "icon-20@2x.png",
"size": "20x20" "scale": "2x"
}, },
{ {
"filename": "Icon-App-20x20@3x.png", "size": "20x20",
"idiom": "iphone", "idiom": "iphone",
"scale": "3x", "filename": "icon-20@3x.png",
"size": "20x20" "scale": "3x"
}, },
{ {
"filename": "Icon-App-29x29@1x.png", "size": "29x29",
"idiom": "iphone", "idiom": "iphone",
"scale": "1x", "filename": "icon-29.png",
"size": "29x29" "scale": "1x"
}, },
{ {
"filename": "Icon-App-29x29@2x.png", "size": "29x29",
"idiom": "iphone", "idiom": "iphone",
"scale": "2x", "filename": "icon-29@2x.png",
"size": "29x29" "scale": "2x"
}, },
{ {
"filename": "Icon-App-29x29@3x.png", "size": "29x29",
"idiom": "iphone", "idiom": "iphone",
"scale": "3x", "filename": "icon-29@3x.png",
"size": "29x29" "scale": "3x"
}, },
{ {
"filename": "Icon-App-40x40@2x.png", "size": "40x40",
"idiom": "iphone", "idiom": "iphone",
"scale": "2x", "filename": "icon-40@2x.png",
"size": "40x40" "scale": "2x"
}, },
{ {
"filename": "Icon-App-40x40@3x.png", "size": "40x40",
"idiom": "iphone", "idiom": "iphone",
"scale": "3x", "filename": "icon-40@3x.png",
"size": "40x40" "scale": "3x"
}, },
{ {
"filename": "Icon-App-60x60@2x.png", "size": "57x57",
"idiom": "iphone", "idiom": "iphone",
"scale": "2x", "filename": "icon-57.png",
"size": "60x60" "scale": "1x"
}, },
{ {
"filename": "Icon-App-60x60@3x.png", "size": "57x57",
"idiom": "iphone", "idiom": "iphone",
"scale": "3x", "filename": "icon-57@2x.png",
"size": "60x60" "scale": "2x"
}, },
{ {
"filename": "Icon-App-20x20@1x.png", "size": "60x60",
"idiom": "ipad", "idiom": "iphone",
"scale": "1x", "filename": "icon-60@2x.png",
"size": "20x20" "scale": "2x"
}, },
{ {
"filename": "Icon-App-20x20@2x.png", "size": "60x60",
"idiom": "ipad", "idiom": "iphone",
"scale": "2x", "filename": "icon-60@3x.png",
"size": "20x20" "scale": "3x"
}, },
{ {
"filename": "Icon-App-29x29@1x.png", "size": "20x20",
"idiom": "ipad", "idiom": "ipad",
"scale": "1x", "filename": "icon-20-ipad.png",
"size": "29x29" "scale": "1x"
}, },
{ {
"filename": "Icon-App-29x29@2x.png", "size": "20x20",
"idiom": "ipad", "idiom": "ipad",
"scale": "2x", "filename": "icon-20@2x-ipad.png",
"size": "29x29" "scale": "2x"
}, },
{ {
"filename": "Icon-App-40x40@1x.png", "size": "29x29",
"idiom": "ipad", "idiom": "ipad",
"scale": "1x", "filename": "icon-29-ipad.png",
"size": "40x40" "scale": "1x"
}, },
{ {
"filename": "Icon-App-40x40@2x.png", "size": "29x29",
"idiom": "ipad", "idiom": "ipad",
"scale": "2x", "filename": "icon-29@2x-ipad.png",
"size": "40x40" "scale": "2x"
}, },
{ {
"filename": "Icon-App-76x76@1x.png", "size": "40x40",
"idiom": "ipad", "idiom": "ipad",
"scale": "1x", "filename": "icon-40.png",
"size": "76x76" "scale": "1x"
}, },
{ {
"filename": "Icon-App-76x76@2x.png", "size": "40x40",
"idiom": "ipad", "idiom": "ipad",
"scale": "2x", "filename": "icon-40@2x.png",
"size": "76x76" "scale": "2x"
}, },
{ {
"filename": "Icon-App-83.5x83.5@2x.png", "size": "50x50",
"idiom": "ipad", "idiom": "ipad",
"scale": "2x", "filename": "icon-50.png",
"size": "83.5x83.5" "scale": "1x"
}, },
{ {
"filename": "Icon-App-1024x1024@1x.png", "size": "50x50",
"idiom": "ios-marketing", "idiom": "ipad",
"scale": "1x", "filename": "icon-50@2x.png",
"size": "1024x1024" "scale": "2x"
},
{
"size": "72x72",
"idiom": "ipad",
"filename": "icon-72.png",
"scale": "1x"
},
{
"size": "72x72",
"idiom": "ipad",
"filename": "icon-72@2x.png",
"scale": "2x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "icon-76.png",
"scale": "1x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "icon-76@2x.png",
"scale": "2x"
},
{
"size": "83.5x83.5",
"idiom": "ipad",
"filename": "icon-83.5@2x.png",
"scale": "2x"
},
{
"size": "1024x1024",
"idiom": "ios-marketing",
"filename": "icon-1024.png",
"scale": "1x"
}
],
"info": {
"version": 1,
"author": "icon.wuruihong.com"
} }
],
"info": {
"author": "icons_launcher",
"version": 1
}
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Some files were not shown because too many files have changed in this diff Show More