flutter_xupdate 一鍵實現Flutter應用版本更新

前言

自2018年我開源了XUpdate以後,至今已迭代了14個版本,月下載量達4k+,Github的star量也已經有700+.android

最近在研究Flutter,因而就隨手寫了一個Flutter小項目練練手,在寫的時候我就發現,目前並無很是好用的版本更新Flutter插件,嘗試了使用Bugly的版本更新Flutter插件,可是效果很是很差.而後百度了一下,基本上都是以下方案:ios

  • 1.使用package_info插件獲取當前應用的版本信息
  • 2.使用dio插件進行網絡請求獲取最新版本信息
  • 3.使用flutter_downloader插件下載最新APP並安裝

我想了一下,這實在是太麻煩了,要知道個人XUpdate把這些都已經作好了,只須要一行代碼就能夠實現應用內的版本更新,不只如此咱們徹底不必把這個幾乎通用的功能在本身的應用內再實現一遍.git

爲此我仔細研究了一下Flutter的插件開發,用了不到1天的時間,就把XUpdate的絕大多數功能在Flutter插件上實現了,這下我就能夠舒舒服服地使用一行代碼來實現版本更新了!github

下面我給出flutter_xupdate插件的地址:json

pub.dev/packages/fl…api


演示

在這裏插入圖片描述

  • 默認版本更新
    在這裏插入圖片描述
  • 支持後臺更新
    在這裏插入圖片描述
  • 屏幕寬高比限制顯示更新
    在這裏插入圖片描述
  • 強制更新
    在這裏插入圖片描述

快速集成指南

添加引用依賴

在你的flutter項目中的pubspec.yaml文件中添加flutter_xupdate依賴.bash

  • 方法一: pub集成
dependencies:
  flutter_xupdate: ^0.0.1
複製代碼
  • 方法二: github集成
dependencies:
  flutter_xupdate:
    git:
      url: git://github.com/xuexiangjys/flutter_xupdate.git
      ref: master
複製代碼

Android設置

修改Android項目的主題爲AppCompat主題,文件路徑: android/app/src/main/res/values/styles.xml, 例如:微信

<resources>
    <style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>
</resources>
複製代碼

初始化

  • 調用FlutterXUpdate.init方法進行初始化.
  • 調用FlutterXUpdate.setErrorHandler方法設置錯誤監聽.
import 'package:flutter_xupdate/flutter_xupdate.dart';

   ///初始化
   void initXUpdate() {
     if (Platform.isAndroid) {
       FlutterXUpdate.init(
         ///是否輸出日誌
         debug: true,
         ///是否使用post請求
         isPost: false,
         ///post請求是不是上傳json
         isPostJson: false,
         ///是否開啓自動模式
         isWifiOnly: false,
         ///是否開啓自動模式
         isAutoMode: false,
         ///須要設置的公共參數
         supportSilentInstall: false,
         ///在下載過程當中,若是點擊了取消的話,是否彈出切換下載方式的重試提示彈窗
         enableRetry: false
       ).then((value) {
         updateMessage("初始化成功: $value");
       }).catchError((error) {
         print(error);
       });

       FlutterXUpdate.setErrorHandler(
           onUpdateError: (Map<String, dynamic> message) async {
         print(message);
         setState(() {
           _message = "$message";
         });
       });
     } else {
       updateMessage("ios暫不支持XUpdate更新");
     }
   }
複製代碼

使用說明

版本更新返回的Json格式

{
  "Code": 0, //0表明請求成功,非0表明失敗
  "Msg": "", //請求出錯的信息
  "UpdateStatus": 1, //0表明不更新,1表明有版本更新,不須要強制升級,2表明有版本更新,須要強制升級
  "VersionCode": 3, //編譯版本號(惟一)
  "VersionName": "1.0.2", //版本名(用於展現)
  "ModifyContent": "一、優化api接口。\r\n二、添加使用demo演示。\r\n三、新增自定義更新服務API接口。\r\n四、優化更新提示界面。", //更新內容
  "DownloadUrl": "https://raw.githubusercontent.com/xuexiangjys/XUpdate/master/apk/xupdate_demo_1.0.2.apk",// 文件下載地址
  "ApkSize": 2048, //文件的大小(單位:kb)
  "ApkMd5": "..."  //md5值沒有的話,就沒法保證apk是否完整,每次都會從新下載。框架默認使用的是md5加密。
}
複製代碼

版本更新

  • 默認更新
FlutterXUpdate.checkUpdate(url: _updateUrl);
複製代碼
  • 默認App更新 + 支持後臺更新
FlutterXUpdate.checkUpdate(url: _updateUrl, supportBackgroundUpdate: true);
複製代碼
  • 調整寬高比顯示的版本更新
FlutterXUpdate.checkUpdate(url: _updateUrl, widthRatio: 0.6);
複製代碼
  • 自動模式下版本更新, 若是須要徹底無人干預,自動更新,須要root權限【靜默安裝須要】
FlutterXUpdate.checkUpdate(url: _updateUrl, isAutoMode: true);
複製代碼
  • 下載時點擊取消容許切換下載方式
FlutterXUpdate.checkUpdate(
      url: _updateUrl,
      overrideGlobalRetryStrategy: true,
      enableRetry: true,
      retryContent: "Github下載速度太慢了,是否考慮切換蒲公英下載?",
      retryUrl: "https://www.pgyer.com/flutter_learn");
複製代碼

關聯連接

微信公衆號

在這裏插入圖片描述

交流羣

在這裏插入圖片描述
相關文章
相關標籤/搜索