补充提交处理BUG

This commit is contained in:
DESKTOP-I3JPKHK\wy 2025-09-11 17:15:15 +08:00
parent 8209b12459
commit e34234da09
3 changed files with 151 additions and 16 deletions

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,33 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
///
class AppStateController extends GetxController with WidgetsBindingObserver {
//
final appLifecycleState = AppLifecycleState.resumed.obs;
// 便
bool get isAppInForeground => appLifecycleState.value == AppLifecycleState.resumed;
@override
void onInit() {
super.onInit();
WidgetsBinding.instance.addObserver(this); //
}
@override
void onClose() {
WidgetsBinding.instance.removeObserver(this); //
super.onClose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
appLifecycleState.value = state; //
// if (isAppInForeground) {
// WidgetsBinding.instance.addPostFrameCallback((_) {
// Get.find<UpgradeLogic>().initiateVersionCheck(Get.context!);
// });
// }
}
}

View File

@ -12,18 +12,13 @@ class PermissionDescribePage extends StatefulWidget {
final String describe; final String describe;
final List<Permission> permissions; final List<Permission> permissions;
const PermissionDescribePage( const PermissionDescribePage({required this.title, required this.describe, required this.permissions, super.key});
{required this.title,
required this.describe,
required this.permissions,
super.key});
@override @override
State<PermissionDescribePage> createState() => _PermissionDescribePageState(); State<PermissionDescribePage> createState() => _PermissionDescribePageState();
} }
class _PermissionDescribePageState extends State<PermissionDescribePage> class _PermissionDescribePageState extends State<PermissionDescribePage> with WidgetsBindingObserver {
with WidgetsBindingObserver {
Timer? _timerPermission; Timer? _timerPermission;
bool theOpenAppSettings = false; bool theOpenAppSettings = false;
int theExecutionFrequency = 0; int theExecutionFrequency = 0;
@ -40,7 +35,7 @@ class _PermissionDescribePageState extends State<PermissionDescribePage>
@override @override
void didChangeAppLifecycleState(AppLifecycleState state) { void didChangeAppLifecycleState(AppLifecycleState state) {
print("-didChangeAppLifecycleState-" + state.toString()); print("-didChangeAppLifecycleState-$state");
switch (state) { switch (state) {
case AppLifecycleState.inactive: // case AppLifecycleState.inactive: //
break; break;
@ -97,7 +92,7 @@ class _PermissionDescribePageState extends State<PermissionDescribePage>
); );
} }
permissions.add(p); permissions.add(p);
} else if (await status.isPermanentlyDenied) { } else if (status.isPermanentlyDenied) {
permanentRefusal.add(p); permanentRefusal.add(p);
} }
} }
@ -137,8 +132,7 @@ class _PermissionDescribePageState extends State<PermissionDescribePage>
/// ///
/// @param List<Permission> permissions /// @param List<Permission> permissions
Future<List<Permission>> getStoragePermission( Future<List<Permission>> getStoragePermission(BuildContext context, List<Permission> permissions,
BuildContext context, List<Permission> permissions,
[int executionFrequency = 0]) async { [int executionFrequency = 0]) async {
Map<Permission, PermissionStatus> statusRes = await permissions.request(); Map<Permission, PermissionStatus> statusRes = await permissions.request();
@ -180,8 +174,7 @@ class _PermissionDescribePageState extends State<PermissionDescribePage>
executionFrequency++; executionFrequency++;
} }
if (executionFrequency <= 1) { if (executionFrequency <= 1) {
var res = var res = await getStoragePermission(context, [key], executionFrequency);
await getStoragePermission(context, [key], executionFrequency);
permanentRefusal.addAll(res); permanentRefusal.addAll(res);
} else { } else {
permanentRefusal.add(key); permanentRefusal.add(key);
@ -215,7 +208,7 @@ class _PermissionDescribePageState extends State<PermissionDescribePage>
color: Colors.black.withOpacity(0.5), // color: Colors.black.withOpacity(0.5), //
spreadRadius: 2, // spreadRadius: 2, //
blurRadius: 4, // blurRadius: 4, //
offset: Offset(0, 3), // X Y offset: const Offset(0, 3), // X Y
), ),
], ],
), ),
@ -239,7 +232,7 @@ class PermissionDescribeUtil {
PermissionDescribeUtil._internal(); PermissionDescribeUtil._internal();
static get instance => _instance ??= PermissionDescribeUtil._internal(); static PermissionDescribeUtil get instance => _instance ??= PermissionDescribeUtil._internal();
/// ///
Future<void> toLaunchPermissionRequest( Future<void> toLaunchPermissionRequest(
@ -257,7 +250,7 @@ class PermissionDescribeUtil {
} }
} }
if (isGranted) { if (isGranted) {
Navigator.of(Get.context ?? context).push(PageRouteBuilder( await Navigator.of(Get.context ?? context).push(PageRouteBuilder(
opaque: false, opaque: false,
pageBuilder: (context, animation, secondaryAnimation) { pageBuilder: (context, animation, secondaryAnimation) {
return PermissionDescribePage( return PermissionDescribePage(