Flutter-如何检查应用程序是否有新版本?

时间:2019-09-23 07:29:05

标签: flutter

我使用 Flutter 创建一个应用。上传新版本时,我需要强制用户更新应用程序。我尝试了this package,但我认为它不起作用。在文档中,我们了解到可以使用此代码验证版本。

  DataTable table = new DataTable();

  table.Columns.Add("a", typeof(string));
  table.Columns.Add("b", typeof(string));
  table.Columns.Add("C", typeof(string));
  table.Columns.Add("d", typeof(string));
  table.Columns.Add("e", typeof(string));
  table.Columns.Add("F", typeof(string));

  var A = new List<string> { "a", "b", "c" };

  // HashSet is a better collection in the context:
  //  1. We can specify comparer (e.g. we can ignore case)
  //  2. It's faster if the collection has many items
  // Sure, you can put A.Contains instead of columnsToKeep.Contains
  HashSet<string> columnsToKeep = 
    new HashSet<string>(A, StringComparer.OrdinalIgnoreCase);

  // For i-th column we should either either keep column (do nothing) or remove it
  for (int i = table.Columns.Count - 1; i >= 0; --i)
    if (!columnsToKeep.Contains(table.Columns[i].ColumnName))
      table.Columns.RemoveAt(i);

问题是:我需要在*'initState'中而不是在 Scaffold 中检查版本。那么在应用程序启动时检查版本的正确方法是什么?

4 个答案:

答案 0 :(得分:2)

您可以检查您的应用版本,例如

@override
void initState() {
super.initState();
Timer( 
    Duration(seconds: 3), // put your stuff here
        () => Navigator.of(context).pushReplacement(MaterialPageRoute(
        builder: (BuildContext context) => LoginScreen())));}

并假定此代码必须在spalsh屏幕或主屏幕中 在那里您可以强制检查应用程序版本,停止所有属于旧版本的应用程序

答案 1 :(得分:1)

您可以致电 https://itunes.apple.com/lookup?bundleId=$idhttps://play.google.com/store/apps/details?id=$id 以接收商店中提供的最新应用程序版本。 我可以推荐这个包来做到这一点:https://pub.dev/packages/new_version

答案 2 :(得分:0)

我建议尝试Firebase Remote Config并在那里更新最低要求的版本。在商店中的每次更新上强制更新应用程序不是一个好习惯。另外,某些用户可以比其他用户更晚地查看给定商店中的更新版本。这就是Google Play和AppStore的工作方式。

因此,当您确实需要强制更新应用程序时,可以在Firebase上增加参数,例如在商店更新后的第二天。

触发对话框的简单代码如下:

Future<bool> checkUpdates() async {
    await remoteConfig.fetch();
    await remoteConfig.activateFetched();

    final requiredBuildNumber = remoteConfig.getInt(Platform.isAndroid
        ? 'requiredBuildNumberAndroid'
        : 'requiredBuildNumberIOS');

    final currentBuildNumber = int.parse(packageInfo.buildNumber);

    return currentBuildNumber < requiredBuildNumber;
  }

这需要添加package_info软件包和firebase_remote_config

要在商店中打开应用,您需要使用url_launcher软件包,并将URL传递给您的应用。

答案 3 :(得分:0)

尝试在 Android iOS 上运行的更新程序包-https://pub.dev/packages/native_updater