完成提交

This commit is contained in:
DESKTOP-I3JPKHK\wy 2025-09-19 13:48:59 +08:00
parent 3d1729f630
commit b422854cfe
2 changed files with 51 additions and 18 deletions

View File

@ -311,6 +311,7 @@ class _MyHomePageState extends State<MyHomePage> {
autoDownload: true,
autoInstall: false,
installTimeout: 60,
requireInstallPermission: false, //
customToast: (message) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
@ -321,12 +322,25 @@ class _MyHomePageState extends State<MyHomePage> {
},
));
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('已配置自定义设置')),
const SnackBar(content: Text('已配置自定义设置(无权限模式)')),
);
},
icon: const Icon(Icons.settings),
label: const Text('自定义配置'),
),
const SizedBox(height: 8),
ElevatedButton.icon(
onPressed: _isLoading
? null
: () {
AppUpgradeSimple.instance.configure(UpgradeConfig.withPermission);
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('已启用权限模式')),
);
},
icon: const Icon(Icons.security),
label: const Text('启用权限模式'),
),
],
),
),

View File

@ -124,6 +124,9 @@ class UpgradeConfig {
/// Toast显示函数
final void Function(String message)? customToast;
/// false
final bool requireInstallPermission;
const UpgradeConfig({
this.showNoUpdateToast = true,
this.autoDownload = false,
@ -133,18 +136,21 @@ class UpgradeConfig {
this.installTimeout = 45,
this.enableDebugLog = true,
this.customToast,
this.requireInstallPermission = false, //
});
///
///
static const UpgradeConfig auto = UpgradeConfig(
autoDownload: true,
autoInstall: true,
requireInstallPermission: false,
);
///
static const UpgradeConfig silent = UpgradeConfig(
showNoUpdateToast: false,
enableDebugLog: false,
requireInstallPermission: false,
);
/// +
@ -152,6 +158,7 @@ class UpgradeConfig {
enableDebugLog: true,
installTimeout: 30,
connectionTimeout: 10,
requireInstallPermission: false,
);
/// +
@ -160,6 +167,12 @@ class UpgradeConfig {
enableDebugLog: false,
installTimeout: 60,
connectionTimeout: 30,
requireInstallPermission: false,
);
///
static const UpgradeConfig withPermission = UpgradeConfig(
requireInstallPermission: true,
);
}
@ -591,6 +604,9 @@ mixin _UpgradeDialogLogic<T extends StatefulWidget> on State<T> {
_statusText = '准备安装...';
});
//
if (config.requireInstallPermission) {
debugPrint('🔐 检查安装权限(配置要求)');
final hasPermission = await PermissionHelper.checkAndRequestInstallPermission(context: context);
if (!hasPermission) {
if (mounted) {
@ -602,6 +618,9 @@ mixin _UpgradeDialogLogic<T extends StatefulWidget> on State<T> {
}
return;
}
} else {
debugPrint('🚀 跳过权限检查,直接安装(配置默认)');
}
if (mounted) {
setState(() {
@ -619,7 +638,7 @@ mixin _UpgradeDialogLogic<T extends StatefulWidget> on State<T> {
_isWaitingForInstallation = true;
_statusText = '请完成安装';
});
showToast('请在系统弹窗中完成安装,完成后点击下方确认按钮');
showToast('请在系统弹窗中完成安装');
//
_startInstallationTimeoutCheck();
@ -748,8 +767,8 @@ mixin _UpgradeDialogLogic<T extends StatefulWidget> on State<T> {
return;
}
//
if (_statusText == '权限被拒绝') {
//
if (_statusText == '权限被拒绝' && config.requireInstallPermission) {
final hasPermission = await PermissionHelper.checkAndRequestInstallPermission(context: context);
if (!hasPermission) {
showToast('仍未获得安装权限,请在设置中手动开启');
@ -1394,7 +1413,7 @@ mixin _UpgradeDialogLogic<T extends StatefulWidget> on State<T> {
///
IconData _getRetryButtonIcon() {
if (_statusText == '权限被拒绝') {
if (_statusText == '权限被拒绝' && config.requireInstallPermission) {
return Icons.settings;
} else if (_statusText == '安装失败' ||
_statusText == '安装异常' ||
@ -1414,7 +1433,7 @@ mixin _UpgradeDialogLogic<T extends StatefulWidget> on State<T> {
///
String _getRetryButtonText() {
if (_statusText == '权限被拒绝') {
if (_statusText == '权限被拒绝' && config.requireInstallPermission) {
return '设置';
} else if (_statusText == '安装失败' ||
_statusText == '安装异常' ||
@ -1452,7 +1471,7 @@ mixin _UpgradeDialogLogic<T extends StatefulWidget> on State<T> {
return _statusText == '安装被取消' ||
_statusText == '安装失败' ||
_statusText == '安装异常' ||
_statusText == '权限被拒绝' ||
(_statusText == '权限被拒绝' && config.requireInstallPermission) ||
_statusText == '安装超时' ||
_statusText == '检测失败' ||
_statusText == '等待安装中' ||
@ -1480,7 +1499,7 @@ mixin _UpgradeDialogLogic<T extends StatefulWidget> on State<T> {
case '安装被取消':
return '点击重新安装';
case '权限被拒绝':
return '点击打开设置';
return config.requireInstallPermission ? '点击打开设置' : '点击重试';
case '安装超时':
return '点击重新尝试';
default: