Flutter app 更新

Flutter 不支持 code-push。

在android 只能強制更新apk或者跳轉到谷歌stop去下載。

在ios,只能提醒去 App Store 官網下載。

## 步驟一

- 創(chuàng)建一個 Updater 類味抖。

-? 獲取線上最新的版本號與本地版本號。

-? ? 通過字符串 hashCode 比較版本號是否一致灰粮。

-? ? 如果不一致仔涩,那么彈出更新對話框。

-? ? 更新提醒對話框我們一天彈出一次就好了粘舟。

-? ? 如果用戶點擊更新熔脂,則跳轉到對應的地址。



``` dart

class Updater extends StatefulWidget {

? const Updater({@required this.child, Key key}) : super(key: key);

? final Widget child;

? @override

? State createState() => UpdaterState();

}

class UpdaterState extends State<Updater> {

? @override

? void initState() {

? ? super.initState();

? ? _checkForUpdates();

? }

? Future<void> _checkForUpdates() async {

? ? PackageInfo packageInfo = await PackageInfo.fromPlatform();

? ? String version = packageInfo.version;

? ? String updateUrl = Theme.of(context).platform == TargetPlatform.iOS

? ? ? ? ? updateUrlLs['ios']

? ? ? ? : updateUrlLs['android'];

? ? String updateTime = PreferModel.prefs.getString('updateTime') ?? null;

? ? /// 一天之內只提醒一次需要更新

? ? if (updateTime != null && DateTime.parse(updateTime).day == DateTime.now().day) {

? ? ? return;

? ? }

? ? try {

? ? ? Response response = await Dio().get(updateUrl);

? ? ? String versionShort = response.data['versionShort'];

? ? ? if (version.hashCode != versionShort.hashCode) {

? ? ? ? final bool wantsUpdate = await showDialog<bool>(

? ? ? ? ? context: context,

? ? ? ? ? builder: (BuildContext context) =>

? ? ? ? ? ? ? _buildDialog(context, response.data['update_url'], packageInfo, versionShort),

? ? ? ? ? barrierDismissible: false,

? ? ? ? );

? ? ? ? if (wantsUpdate != null && wantsUpdate) {

? ? ? ? ? PreferModel.prefs.remove('updateTime');

? ? ? ? ? launch(response.data['update_url'],

? ? ? ? ? forceSafariVC: false,

? ? ? ? ? );

? ? ? ? } else {

? ? ? ? ? PreferModel.prefs.setString('updateTime', DateTime.now().toString());

? ? ? ? }

? ? ? }

? ? } catch (e) {}

? }

? Widget _buildDialog(

? ? ? BuildContext context, String updateUrl, PackageInfo packageInfo, String versionShort) {

? ? final ThemeData theme = Theme.of(context);

? ? final TextStyle dialogTextStyle =

? ? ? ? theme.textTheme.subhead.copyWith(color: theme.textTheme.caption.color);

? ? return CupertinoAlertDialog(

? ? ? title: Text('是否立即更新${packageInfo.appName}?'),

? ? ? content: Text('檢測到新版本 v$versionShort', style: dialogTextStyle),

? ? ? actions: <Widget>[

? ? ? ? CupertinoDialogAction(

? ? ? ? ? child: const Text('下次再說'),

? ? ? ? ? onPressed: () {

? ? ? ? ? ? Navigator.pop(context, false);

? ? ? ? ? },

? ? ? ? ),

? ? ? ? CupertinoDialogAction(

? ? ? ? ? child: const Text('立即更新'),

? ? ? ? ? onPressed: () {

? ? ? ? ? ? Navigator.pop(context, true);

? ? ? ? ? },

? ? ? ? ),

? ? ? ],

? ? );

? }

? @override

? Widget build(BuildContext context) => widget.child;

}

```


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末柑肴,一起剝皮案震驚了整個濱河市霞揉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晰骑,老刑警劉巖适秩,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異硕舆,居然都是意外死亡秽荞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門抚官,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扬跋,“玉大人,你說我怎么就攤上這事凌节∏仗” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵倍奢,是天一觀的道長朴上。 經常有香客問我,道長卒煞,這世上最難降的妖魔是什么痪宰? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上酵镜,老公的妹妹穿的比我還像新娘碉碉。我一直安慰自己柴钻,他們只是感情好淮韭,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贴届,像睡著了一般靠粪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毫蚓,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天占键,我揣著相機與錄音,去河邊找鬼元潘。 笑死畔乙,一個胖子當著我的面吹牛,可吹牛的內容都是我干的翩概。 我是一名探鬼主播牲距,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钥庇!你這毒婦竟也來了牍鞠?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤评姨,失蹤者是張志新(化名)和其女友劉穎难述,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體吐句,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胁后,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嗦枢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片择同。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖净宵,靈堂內的尸體忽然破棺而出敲才,到底是詐尸還是另有隱情,我是刑警寧澤择葡,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布紧武,位于F島的核電站,受9級特大地震影響敏储,放射性物質發(fā)生泄漏阻星。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望妥箕。 院中可真熱鬧滥酥,春花似錦、人聲如沸畦幢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宇葱。三九已至瘦真,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間黍瞧,已是汗流浹背诸尽。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留印颤,地道東北人您机。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像年局,于是被迫代替她去往敵國和親际看。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351