flutter app版本更新

2020-01-21  本文已影响0人  冰点雨

本来想做从服务器下载安装包自动下载安装的。
使用flutter_downloader: ^1.1.7下载的时候,插件报错,还未解决。先做打开链接自己下载吧。

实现的步骤:

1.配置AndroidMenifest.xml文件

<uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

2.在pubspec.yaml添加sdk

dependencies:
  ...
  cupertino_icons: ^0.1.0
  package_info: ^0.4.0+13 #获取版本信息

3..第一次打开APP时执行"版本更新"的网络请求

class DashboardPageState extends State<DashboardPage>{ 
var serviceVersionCode; 
@override  void initState() { 
super.initState();
 _getNewVersionAPP();//"版本更新"的异步请求 
} 
//异步请求 
 Future _getNewVersionAPP() async { 
String url = url; 
DioUtil.get(url).then((response) {
 if (response != null) {
 setState(() {
 var data = response.data; 
serviceVersionCode = data["versionCode"];//获取[服务器的versionCode _checkVersionCode(); //升级app版本的方法
 });
 } 
}); 
}
 }

4.比较服务器的版本号跟当前的版本号,来判断要不要升级APP应用程序

void _checkVersionCode() {
    PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
      var currentVersionCode = packageInfo.version;//获取当前的版本号
      //如果获取服务器的版本号比当前应用程序的版本号还高,那么提示升级
      if (serviceVersionCode > currentVersionCode) {
        _showNewVersionAppDialog();//弹出"版本更新"的对话框
      }
   });
}

5.弹出“版本更新”对话框

 Future<void> _showNewVersionAppDialog() async {
    return showDialog<void>(
        context: context,
        barrierDismissible: false,
        builder: (BuildContext context) {
          return AlertDialog(
            title: new Row(
              children: <Widget>[
                new Image.asset("images/ic_launcher_icon.png",
                    height: 35.0, width: 35.0),
                new Padding(
                    padding: const EdgeInsets.fromLTRB(30.0, 0.0, 10.0, 0.0),
                    child: new Text("项目名称",
                        style: dialogButtonTextStyle))
              ],
            ),
            content: new Text(
                '版本更新',
                style: dialogTextStyle),
            actions: <Widget>[
              new FlatButton(
                child: new Text('Later', style: dialogButtonTextStyle),
                onPressed: () {
                  Navigator.of(context).pop();
                },
              ),
              new FlatButton(
                child: new Text('DownLoad', style: dialogButtonTextStyle),
                onPressed: () {
                  _goToGooglePlay();//到Google Play官网去下载APK
                },
              )
            ],
          );
        });
  }

6.到Google Play官网去下载APK

void _goToGooglePlay() {
    Navigator.of(context).push(new MaterialPageRoute(builder: (context) {
      return new CommonWebViewPage(
          url:
          "https://play.google.com/store/apps/details?id=项目包名");
    }));
  }
上一篇下一篇

猜你喜欢

热点阅读