diff --git a/example/lib/main.dart b/example/lib/main.dart index e364f8c..e1e6970 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:app_upgrade_plugin/app_upgrade_plugin.dart'; -import 'package:app_upgrade_plugin/app_upgrade_plugin_enhanced.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; @@ -21,13 +20,6 @@ void main() { // AppUpgradePlugin().configureHttp(HttpConfig.unsafe); // 延迟插件配置到Flutter完全初始化后 - Future.delayed(Duration.zero, () { - AppUpgradePluginEnhanced.instance.configure( - debugMode: true, - wifiOnly: false, - autoCheck: true, - ); - }); runApp(const MyApp()); } diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 69ac2e0..66bb815 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -3,6 +3,7 @@ description: "Demonstrates how to use the app_upgrade_plugin plugin." # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev +version: 1.0.0+1 environment: sdk: '>=3.0.0 <4.0.0' diff --git a/lib/app_upgrade_simple.dart b/lib/app_upgrade_simple.dart index 8054cdf..29cc22d 100644 --- a/lib/app_upgrade_simple.dart +++ b/lib/app_upgrade_simple.dart @@ -3,8 +3,40 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; -import 'app_upgrade_plugin.dart'; +import 'app_upgrade_plugin_platform_interface.dart'; +import 'core/permission_helper.dart'; import 'core/upgrade_utils.dart'; +import 'models/upgrade_info.dart'; +import 'widgets/market_selection_dialog.dart'; + +/// 简化的插件接口,避免循环导入 +class _SimpleAppUpgradePlugin { + static final _SimpleAppUpgradePlugin _instance = _SimpleAppUpgradePlugin._(); + + _SimpleAppUpgradePlugin._(); + + static _SimpleAppUpgradePlugin get instance => _instance; + + Future checkUpdate(String url, {Map? params}) { + return AppUpgradePluginPlatform.instance.checkUpdate(url, params: params); + } + + Future downloadApk(String url, {Function(DownloadProgress)? onProgress}) { + return AppUpgradePluginPlatform.instance.downloadApk(url, onProgress: onProgress); + } + + Future installApk(String filePath) { + return AppUpgradePluginPlatform.instance.installApk(filePath); + } + + Future goToAppStore(String url) { + return AppUpgradePluginPlatform.instance.goToAppStore(url); + } + + Future> getAppInfo() { + return AppUpgradePluginPlatform.instance.getAppInfo(); + } +} /// 简化版App升级管理器 /// 提供最简单的API,一行代码即可实现App升级功能 @@ -23,11 +55,11 @@ class AppUpgradeSimple { } @visibleForTesting - AppUpgradeSimple.private({AppUpgradePlugin? plugin}) : _plugin = plugin ?? AppUpgradePlugin(); + AppUpgradeSimple.private({_SimpleAppUpgradePlugin? plugin}) : _plugin = plugin ?? _SimpleAppUpgradePlugin.instance; - AppUpgradeSimple._() : _plugin = AppUpgradePlugin(); + AppUpgradeSimple._() : _plugin = _SimpleAppUpgradePlugin.instance; - final AppUpgradePlugin _plugin; + final _SimpleAppUpgradePlugin _plugin; /// 一键检查更新(最简单的使用方式) /// @@ -240,7 +272,7 @@ class _UpgradeDialogContent extends StatelessWidget { /// 共享的升级操作逻辑 mixin _UpgradeDialogLogic on State { - final _plugin = AppUpgradePlugin(); + final _plugin = _SimpleAppUpgradePlugin.instance; bool _isDownloading = false; double _downloadProgress = 0; String _statusText = ''; diff --git a/lib/core/permission_helper.dart b/lib/core/permission_helper.dart index 2681653..25dae97 100644 --- a/lib/core/permission_helper.dart +++ b/lib/core/permission_helper.dart @@ -4,7 +4,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handler.dart'; -import '../app_upgrade_plugin.dart'; +import '../app_upgrade_plugin_platform_interface.dart'; /// Enum representing the status of the install permission. enum InstallPermissionStatus { @@ -24,8 +24,6 @@ enum InstallPermissionStatus { /// A helper class for handling permissions required by the app upgrade process. class PermissionHelper { - static final _plugin = AppUpgradePlugin(); - /// Checks and requests storage permission (required for downloading files). /// /// This method handles different Android versions appropriately: @@ -196,7 +194,7 @@ class PermissionHelper { if (openSettings) { // 使用精确的安装权限设置页面 - final opened = await _plugin.openInstallPermissionSettings(); + final opened = await AppUpgradePluginPlatform.instance.openInstallPermissionSettings(); if (!opened) { // 如果无法打开精确页面,则使用通用应用设置页面作为后备 await openAppSettings(); @@ -221,7 +219,7 @@ class PermissionHelper { if (openSettings) { // 使用精确的安装权限设置页面 - final opened = await _plugin.openInstallPermissionSettings(); + final opened = await AppUpgradePluginPlatform.instance.openInstallPermissionSettings(); if (!opened) { // 如果无法打开精确页面,则使用通用应用设置页面作为后备 await openAppSettings(); @@ -313,7 +311,7 @@ class PermissionHelper { /// Caches the result to avoid repeated platform channel calls. static Future _getAndroidSdkVersion() async { if (!Platform.isAndroid) return 0; - _sdkVersion ??= await _plugin.getAndroidSdkVersion() ?? 0; + _sdkVersion ??= await AppUpgradePluginPlatform.instance.getAndroidSdkVersion() ?? 0; return _sdkVersion!; } }