最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

功能點:

1.更新彈窗UI

2.強更與非強更且別控制

3.屏蔽物理返回鍵(因為強更的時候點擊返回鍵,彈窗會消失)

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

先看下效果圖:

Dialog實現(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();
 //獲取當前的版本號
 int currentVersionCode = int.parse(packageInfo.version.replaceAll('.', ''));
 //如果獲取服務器的版本號比當前應用程序的版本號還高,那么提示升級
 if (serviceVersionCode > currentVersionCode) {
  if(Platform.isAndroid){
  //Android平臺在應用內(nèi)進行更新
  //彈出"版本更新"的對話框
  UpdateDialog.showUpdateDialog(context, '1.修復已知bug\n2.優(yōu)化用戶體驗', false);
  }else if(Platform.isIOS){
  //iOS平臺跳轉(zhuǎn)道AppStore進行更新
  }
 }
 }

重點說明:

屏蔽物理返回鍵(因為強更的時候點擊返回鍵,彈窗會消失)

barrierDismissible: false,

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

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

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

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

相關文章

最新評論

南昌市| 景德镇市| 台江县| 隆安县| 余庆县| 京山县| 固安县| 广宁县| 社旗县| 嵩明县| 高邮市| 商水县| 西充县| 万荣县| 民县| 汤阴县| 长阳| 南京市| 遂昌县| 九台市| 江都市| 新巴尔虎左旗| 建瓯市| 邵东县| 宁都县| 临泉县| 绩溪县| 彰武县| 昆山市| 左贡县| 鱼台县| 杭锦旗| 彭州市| 儋州市| 五寨县| 卢氏县| 额敏县| 沛县| 北海市| 无极县| 石门县|