Compare commits

..

No commits in common. "b9721f93c7fb0fa85b2800a73da95abd8d579c50" and "3d1729f630c37281a6ea37893e9a57906adb5705" have entirely different histories.

2 changed files with 18 additions and 51 deletions

View File

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