欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flutter之自定義Dialog實(shí)現(xiàn)版本更新彈窗功能的實(shí)現(xiàn)

 更新時(shí)間:2020年07月24日 08:54:47   作者:管管  
這篇文章主要介紹了Flutter之自定義Dialog實(shí)現(xiàn)版本更新彈窗功能的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

功能點(diǎn):

1.更新彈窗UI

2.強(qiáng)更與非強(qiáng)更且別控制

3.屏蔽物理返回鍵(因?yàn)閺?qiáng)更的時(shí)候點(diǎn)擊返回鍵,彈窗會(huì)消失)

4.點(diǎn)擊彈窗外透明區(qū)域時(shí),彈窗不消失

先看下效果圖:

Dialog實(shí)現(xiàn)代碼:

import 'package:flutter/material.dart';
import 'package:xiaopijiang/utils/assets_util.dart';
import 'package:xiaopijiang/utils/toast_util.dart';

///created by WGH
///on 2020/7/23
///description:版本更新提示彈窗
class UpdateDialog extends Dialog {
 final String upDateContent;
 final bool isForce;

 UpdateDialog({this.upDateContent, this.isForce});

 @override
 Widget build(BuildContext context) {
 return Center(
  child: Column(
  mainAxisAlignment: MainAxisAlignment.center,
  children: <Widget>[
   Container(
   width: 319,
   height: 370,
   child: Stack(
    children: <Widget>[
    Image.asset(
     AssetsUtil.getImagePath(
      imageName: 'bg_update', suffix: 'png'),
     fit: BoxFit.cover,
    ),
    Container(
     width: double.infinity,
     child: Column(
     mainAxisAlignment: MainAxisAlignment.spaceBetween,
     children: <Widget>[
      Container(
      margin: EdgeInsets.only(top: 110),
      child: Text('發(fā)現(xiàn)新版本',
       style: TextStyle(
        fontSize: 20,
        color: Colors.white,
        decoration: TextDecoration.none)),
      ),
      Text(upDateContent,
       style: TextStyle(
        fontSize: 16,
        color: Colors.black54,
        decoration: TextDecoration.none)),
      Container(
      width: 250,
      height: 42,
      margin: EdgeInsets.only(bottom: 15),
      child: RaisedButton(
       color: Colors.red,
       shape: StadiumBorder(),
       child: Text(
        '立即更新',
        style:
         TextStyle(fontSize: 20, color: Colors.white),
       ),
       onPressed: () {
        ToastUtil.showTips('下載apk');
       }),
      )
     ],
     ),
    ),
    ],
   ),
   ),
   GestureDetector(
   onTap: () {
    Navigator.pop(context);
   },
   child: Offstage(
    offstage: isForce,
    child: Container(
     margin: EdgeInsets.only(top: 30),
     child: Image.asset(
     AssetsUtil.getImagePath(
      imageName: 'ic_update_close', suffix: 'png'),
     width: 35,
     height: 35,
     )),
   ),
   )
  ],
  ),
 );
 }

 static showUpdateDialog(
  BuildContext context, String mUpdateContent, bool mIsForce) {
 return showDialog(
  barrierDismissible: false,
  context: context,
  builder: (BuildContext context) {
   return WillPopScope(
    child: UpdateDialog(
     upDateContent: mUpdateContent, isForce: mIsForce),onWillPop: _onWillPop);
  });
 }

 static Future<bool> _onWillPop() async{
 return false;
 }
}

調(diào)用Dialog:

_checkUpdate() async{
 int serviceVersionCode = 101;
 PackageInfo packageInfo = await PackageInfo.fromPlatform();
 //獲取當(dāng)前的版本號(hào)
 int currentVersionCode = int.parse(packageInfo.version.replaceAll('.', ''));
 //如果獲取服務(wù)器的版本號(hào)比當(dāng)前應(yīng)用程序的版本號(hào)還高,那么提示升級(jí)
 if (serviceVersionCode > currentVersionCode) {
  if(Platform.isAndroid){
  //Android平臺(tái)在應(yīng)用內(nèi)進(jìn)行更新
  //彈出"版本更新"的對(duì)話(huà)框
  UpdateDialog.showUpdateDialog(context, '1.修復(fù)已知bug\n2.優(yōu)化用戶(hù)體驗(yàn)', false);
  }else if(Platform.isIOS){
  //iOS平臺(tái)跳轉(zhuǎn)道AppStore進(jìn)行更新
  }
 }
 }

重點(diǎn)說(shuō)明:

屏蔽物理返回鍵(因?yàn)閺?qiáng)更的時(shí)候點(diǎn)擊返回鍵,彈窗會(huì)消失)

barrierDismissible: false,

4.點(diǎn)擊彈窗外透明區(qū)域時(shí),彈窗不消失

return WillPopScope(
    child: UpdateDialog(
     upDateContent: mUpdateContent, isForce: mIsForce),
    onWillPop: _onWillPop);

 static Future<bool> _onWillPop() async {
 return false;
 }

到此這篇關(guān)于Flutter之自定義Dialog實(shí)現(xiàn)版本更新彈窗功能的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Flutter自定義Dialog彈窗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Flutter3.7新增Menu菜單組件的使用教程分享

    Flutter3.7新增Menu菜單組件的使用教程分享

    之前Flutter的菜單選擇、下拉菜單的支持非常簡(jiǎn)單且不友好,對(duì)于非常常見(jiàn)的下拉菜單選擇功能是需要自己自定義實(shí)現(xiàn),今天看到Flutter3.7版本新增了一系列菜單的組件,馬上來(lái)試試
    2023-01-01
  • Qt qml中l(wèi)istview 列表視圖控件(下拉刷新、上拉分頁(yè)、滾動(dòng)軸)

    Qt qml中l(wèi)istview 列表視圖控件(下拉刷新、上拉分頁(yè)、滾動(dòng)軸)

    這篇文章主要介紹了Qt qml中l(wèi)istview 列表視圖控件(下拉刷新、上拉分頁(yè)、滾動(dòng)軸) 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Android 界面開(kāi)發(fā)顏色整理

    Android 界面開(kāi)發(fā)顏色整理

    本文主要介紹Android 界面開(kāi)發(fā)的顏色,這里整理了很多顏色以供大家參考,希望Android 開(kāi)發(fā)的工作者可以參考使用
    2016-07-07
  • Android中一種效果奇好的混音方法詳解

    Android中一種效果奇好的混音方法詳解

    這篇文章主要給大家介紹了關(guān)于在Android中一種效果奇好的混音方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • android電話(huà)模擬器(示例代碼)

    android電話(huà)模擬器(示例代碼)

    本篇文章我將為大家介紹一下android電話(huà)模擬器(示例代碼),需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • Android ViewFlipper翻轉(zhuǎn)視圖使用詳解

    Android ViewFlipper翻轉(zhuǎn)視圖使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android ViewFlipper翻轉(zhuǎn)視圖的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android發(fā)生ANR后的信息采集過(guò)程

    Android發(fā)生ANR后的信息采集過(guò)程

    這篇文章主要為大家介紹了Android發(fā)生ANR后的信息采集過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • android ImageView 的幾點(diǎn)經(jīng)驗(yàn)總結(jié)

    android ImageView 的幾點(diǎn)經(jīng)驗(yàn)總結(jié)

    本篇文章是對(duì)android中ImageView的使用技巧進(jìn)行了幾點(diǎn)經(jīng)驗(yàn)總結(jié),需要的朋友參考下
    2013-06-06
  • Android實(shí)現(xiàn) EditText輸入手機(jī)號(hào)空格功能

    Android實(shí)現(xiàn) EditText輸入手機(jī)號(hào)空格功能

    這篇文章主要介紹了Android實(shí)現(xiàn) EditText輸入手機(jī)號(hào)空格功能,實(shí)現(xiàn)思路是要重寫(xiě)TextWatcher,每次EditText內(nèi)容變化,都判斷內(nèi)容是否符合要求,具體實(shí)例代碼大家參考下本文
    2018-02-02
  • Android?Xml轉(zhuǎn)換為View過(guò)程詳解

    Android?Xml轉(zhuǎn)換為View過(guò)程詳解

    這篇文章主要為大家介紹了Android?Xml轉(zhuǎn)換為View實(shí)現(xiàn)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評(píng)論