flutter 我想更新的应用程序版本在playstore显示一个消息对话框给用户

f5emj3cl  于 2023-04-07  发布在  Flutter
关注(0)|答案(2)|浏览(148)

我是新的Flutter.我想更新新版本的应用程序在Playstore中显示消息对话框给用户更新新版本,我用的插件version_check 0.2.0.当用户已经更新,但它仍然显示消息对话框相同.如何不显示更新后的消息对话框.谁可以帮助我?
This my Code
This my Code
This my Code

42fyovps

42fyovps1#

由于问题中的所有内容都不清楚,您应该按照给定的步骤来实现相同的目标。

第一步,在firebase的远程配置中添加镜像中的几个参数,然后发布

步骤2.创建VersionCheck和_showVersionDialog函数,如下所示:

versionCheck(){
    //Get Current installed version of app

    WidgetsBinding.instance.addPostFrameCallback((_) async {
      final PackageInfo info = await PackageInfo.fromPlatform();
      double currentVersion = double.parse(info.version.trim().replaceAll(".", ""));

      //Get Latest version info from firebase config
      final RemoteConfig remoteConfig = await RemoteConfig.instance;

      try {
        // Using default duration to force fetching from remote server.
        await remoteConfig.fetch(expiration: const Duration(seconds: 0));
        await remoteConfig.activateFetched();
        remoteConfig.getString('force_update_current_version');

        double newVersion = double.parse(remoteConfig
            .getString('force_update_current_version')
            .trim()
            .replaceAll(".", ""));
        if (newVersion > currentVersion) {
          setState(() {
            versionCode =  remoteConfig.getString('force_update_current_version');
            aboutVersion =  remoteConfig.getString('update_feature');
          });
          _showVersionDialog(context);
        }
      } on FetchThrottledException catch (exception) {
        // Fetch throttled.
        print(exception);
      } catch (exception) {
        print('Unable to fetch remote config. Cached or default values will be '
            'used');
      }

    });

  }
_showVersionDialog(context) async {
    await showDialog<String>(
      context: context,
      barrierDismissible: false,
      builder: (BuildContext context) {
        String title = "Update Available";
        String message =
            "About Update: \n";

        return ButtonBarTheme(
          data:   ButtonBarThemeData(alignment: MainAxisAlignment.center),
          child: new AlertDialog(
            shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30)),
            title: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Text(title),
                Text("v"+versionCode),
              ],
            ),
            content: Container(
              height: 80,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Text(message,style: TextStyle(fontWeight: FontWeight.bold),),
                  Text(aboutVersion),
                ],
              ),
            ),
            actions: <Widget>[
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: RaisedButton(
                  child: new Text(
                    'Update',
                    style: TextStyle(color: Colors.white),
                  ),
                  color: Color(0xFF121A21),
                  shape: new RoundedRectangleBorder(
                    borderRadius: new BorderRadius.circular(30.0),
                  ),
                  onPressed: () {
                    _launchURL(PLAY_STORE_URL);
                  },
                ),
              ),
            ],
          ),
        );
      },
    );
  }

第三步,在主界面的init函数中调用VersionCheck,如下所示。

@override
  void initState() {
  
    Future.delayed(const Duration(milliseconds: 5000), () {

       if(mounted){
         setState(() {
           versionCheck();
         });
       }

    });

    super.initState();

  }

第四步,每当你想更新对话框出现在屏幕上时,只需在firebase的远程配置中增加版本代码值,而不是你的实际版本代码值。

这将帮助你实现你想要的。

i1icjdpr

i1icjdpr2#

这真的很容易做到。有一个包可以让这真的很容易:-https://pub.dev/packages/playstore_update
使用此软件包,您可以直接显示一个弹出窗口给用户,每当有一个新的更新,您的应用程序在Google Play商店。
同时,如果你不想要弹出窗口,但只是想要你的应用程序或应用程序的版本的详细信息在播放商店,你可以参考这些软件包:-
https://pub.dev/packages/package_info_plus
https://pub.dev/packages/peekanapp

相关问题