diff --git a/kouyu_english/android/app/src/main/AndroidManifest.xml b/kouyu_english/android/app/src/main/AndroidManifest.xml index d27f30f..029b199 100644 --- a/kouyu_english/android/app/src/main/AndroidManifest.xml +++ b/kouyu_english/android/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ diff --git a/kouyu_english/install_app.sh b/kouyu_english/install_app.sh index 2165a05..df4e7eb 100755 --- a/kouyu_english/install_app.sh +++ b/kouyu_english/install_app.sh @@ -23,9 +23,13 @@ if [ ! -f "$APK_PATH" ]; then fi echo "🚀 正在安装 APK 到手机..." -adb install -r "$APK_PATH" +if ! adb install -r "$APK_PATH"; then + echo "⚠️ 覆盖安装失败(签名不一致或版本冲突),正在卸载旧版本并重新安装..." + adb uninstall com.shen.kouyu_english || true + adb install -r "$APK_PATH" +fi -echo "▶️ 正在手机上启动 口语英语 App..." +echo "▶️ 正在手机上启动 开口英语 App..." adb shell monkey -p com.shen.kouyu_english -c android.intent.category.LAUNCHER 1 > /dev/null 2>&1 || true echo "✅ 安装并启动成功!" diff --git a/kouyu_english/lib/features/progress/progress_pages.dart b/kouyu_english/lib/features/progress/progress_pages.dart index 382e11a..0b85f5a 100644 --- a/kouyu_english/lib/features/progress/progress_pages.dart +++ b/kouyu_english/lib/features/progress/progress_pages.dart @@ -288,7 +288,7 @@ class _SettingsPageState extends State { style: TextStyle(fontSize: 12, color: AppColors.muted), ), DropdownButtonFormField( - initialValue: widget.state.aiProvider, + value: widget.state.aiProvider, decoration: const InputDecoration( labelText: '服务类型', border: OutlineInputBorder(), @@ -313,15 +313,17 @@ class _SettingsPageState extends State { ], onChanged: (value) { if (value == null) return; - widget.state.setAiProvider(value); - if (value == AiProviderType.gemini && - endpoint.text.trim().isEmpty) { - endpoint.text = - 'https://generativelanguage.googleapis.com/v1beta'; - model.text = model.text.trim().isEmpty - ? 'gemini-2.5-flash' - : model.text; - } + setState(() { + widget.state.setAiProvider(value); + if (value == AiProviderType.gemini && + endpoint.text.trim().isEmpty) { + endpoint.text = + 'https://generativelanguage.googleapis.com/v1beta'; + model.text = model.text.trim().isEmpty + ? 'gemini-2.5-flash' + : model.text; + } + }); }, ), TextField(