Flutter应用升级插件sr_upgrade的使用

Flutter应用升级插件sr_upgrade的使用

sr_upgrade 是一个用于实现 Flutter 应用升级功能的插件。它支持 Android 平台下载和升级 APK,并提供了自定义 UI 组件来显示下载进度回调。

AndroidManifest.xml 中添加 application 配置

在你的 AndroidManifest.xml 文件中的 <application> 标签内添加以下配置:

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths"/>
</provider>

添加依赖

在你的 pubspec.yaml 文件中添加 sr_upgrade 依赖:

dependencies:
  sr_upgrade: ^0.0.2

然后运行 flutter pub get 来安装依赖。

使用 sr_upgrade

引入

首先,引入必要的包:

import 'package:flutter/material.dart';
import 'package:sr_upgrade/sr_upgrade.dart';

初始化应用

main.dart 文件中初始化应用:

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Home(),
    );
  }
}

创建主界面

_MyAppState 类中创建主界面组件:

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  String step = '0.00';

  // 调用升级方法
  _upgrade() {
    SrUpgrade.upgrade(
        'https://dldir1.qq.com/weixin/android/weixin806android1900_arm64.apk',
        progressCallback: (int count, int total) {
      setState(() {
        step = (count / total * 100).toStringAsFixed(2);
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('插件示例应用'),
      ),
      body: Container(
        width: double.infinity,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            // 检查升级按钮
            TextButton(
              onPressed: _upgrade,
              child: Container(
                width: 200,
                height: 50,
                decoration: BoxDecoration(
                    color: Colors.blue,
                    borderRadius: BorderRadius.circular(15)),
                alignment: Alignment.center,
                child: Text(
                  '检查升级',
                  style: TextStyle(color: Colors.white, fontSize: 20),
                ),
              ),
            ),
            // 显示当前下载进度
            Text('当前下载进度$step%')
          ],
        ),
      ),
    );
  }
}

解释

  1. 导入必要的库

    import 'package:flutter/material.dart';
    import 'package:sr_upgrade/sr_upgrade.dart';
    
  2. 初始化应用

    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatefulWidget {
      @override
      _MyAppState createState() => _MyAppState();
    }
    
    class _MyAppState extends State<MyApp> {
      @override
      void initState() {
        super.initState();
      }
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Home(),
        );
      }
    }
    
  3. 创建主界面组件

    class Home extends StatefulWidget {
      @override
      _HomeState createState() => _HomeState();
    }
    
    class _HomeState extends State<Home> {
      String step = '0.00';
    
      // 升级方法
      _upgrade() {
        SrUpgrade.upgrade(
            'https://dldir1.qq.com/weixin/android/weixin806android1900_arm64.apk',
            progressCallback: (int count, int total) {
          setState(() {
            step = (count / total * 100).toStringAsFixed(2);
          });
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: const Text('插件示例应用'),
          ),
          body: Container(
            width: double.infinity,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                // 检查升级按钮
                TextButton(
                  onPressed: _upgrade,
                  child: Container(
                    width: 200,
                    height: 50,
                    decoration: BoxDecoration(
                        color: Colors.blue,
                        borderRadius: BorderRadius.circular(15)),
                    alignment: Alignment.center,
                    child: Text(
                      '检查升级',
                      style: TextStyle(color: Colors.white, fontSize: 20),
                    ),
                  ),
                ),
                // 显示当前下载进度
                Text('当前下载进度$step%')
              ],
            ),
          ),
        );
      }
    }
    

更多关于Flutter应用升级插件sr_upgrade的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用升级插件sr_upgrade的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


sr_upgrade 是一个用于 Flutter 应用升级的插件,它可以帮助开发者实现应用内更新功能,特别是在 Android 和 iOS 平台上。通过 sr_upgrade,你可以轻松地检查应用是否有新版本,并提示用户进行更新。

1. 安装 sr_upgrade 插件

首先,你需要在 pubspec.yaml 文件中添加 sr_upgrade 依赖:

dependencies:
  flutter:
    sdk: flutter
  sr_upgrade: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 基本使用

2.1 初始化 sr_upgrade

在你的 main.dart 文件中初始化 sr_upgrade

import 'package:flutter/material.dart';
import 'package:sr_upgrade/sr_upgrade.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SrUpgrade().init();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

2.2 检查更新

你可以在应用的某个地方(例如首页或设置页面)调用 checkUpdate 方法来检查是否有新版本:

import 'package:flutter/material.dart';
import 'package:sr_upgrade/sr_upgrade.dart';

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            bool hasUpdate = await SrUpgrade().checkUpdate(
              url: 'https://your-api-url.com/check-update', // 检查更新的API地址
              version: '1.0.1', // 当前应用的版本号
            );
            if (hasUpdate) {
              showDialog(
                context: context,
                builder: (context) {
                  return AlertDialog(
                    title: Text('发现新版本'),
                    content: Text('是否立即更新?'),
                    actions: [
                      TextButton(
                        onPressed: () {
                          Navigator.of(context).pop();
                        },
                        child: Text('取消'),
                      ),
                      TextButton(
                        onPressed: () {
                          SrUpgrade().upgrade();
                          Navigator.of(context).pop();
                        },
                        child: Text('更新'),
                      ),
                    ],
                  );
                },
              );
            } else {
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('当前已是最新版本')),
              );
            }
          },
          child: Text('检查更新'),
        ),
      ),
    );
  }
}

2.3 执行更新

SrUpgrade().upgrade() 方法会根据平台自动处理更新逻辑:

  • Android: 打开应用商店或直接下载 APK 文件进行更新。
  • iOS: 打开 App Store 进行更新。

3. 高级配置

sr_upgrade 还支持一些高级配置,例如自定义更新提示对话框、设置下载路径等。你可以根据具体需求进行调整。

3.1 自定义更新提示对话框

你可以通过 SrUpgrade().setUpgradeDelegate 方法自定义更新提示对话框:

SrUpgrade().setUpgradeDelegate(
  onShowUpdateDialog: (context, versionInfo) {
    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: Text('发现新版本 ${versionInfo.version}'),
          content: Text('是否立即更新?'),
          actions: [
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: Text('取消'),
            ),
            TextButton(
              onPressed: () {
                SrUpgrade().upgrade();
                Navigator.of(context).pop();
              },
              child: Text('更新'),
            ),
          ],
        );
      },
    );
  },
);

3.2 设置下载路径

你可以通过 SrUpgrade().setDownloadPath 方法设置 APK 文件的下载路径:

SrUpgrade().setDownloadPath('/sdcard/Download/your-app.apk');
回到顶部