【问题标题】:How to get build and version number of Flutter Web app如何获取 Flutter Web 应用的构建和版本号
【发布时间】:2020-06-24 02:07:50
【问题描述】:

这里的关键字是Web。我可以使用package_info 插件获取 Flutter 应用程序的构建和版本号,但如果它在 Web 上运行,我不能。如何获取 Flutter Web 应用的包信息?

我将在下面提供一个答案作为临时修复,但我正在寻找一个从 pubspec.yaml 获取版本信息的解决方案。

【问题讨论】:

标签: flutter dart version


【解决方案1】:

作为一种临时解决方法,您可以创建一个单独的文件,其中包含版本信息:

web_version_info.dart

class WebVersionInfo {
  static const String name = '1.0.0';
  static const int build = 1;
}

您可以将它用于所有平台,也可以在您的代码中使用kIsWeb 将其用于网络:

Future<String> _getAppVersion() async {
  if (kIsWeb) {
    return WebVersionInfo.name;
  } else {
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    return packageInfo.version;
  }
}

当然,这不是一个很好的解决方案,因为现在您需要记住每次更新应用程序时都在pubspec.yamlWebVersionInfo 中更新版本和构建信息。

【讨论】:

    【解决方案2】:

    如果您使用 beta 通道,则可以使用 package_info_plus 插件,该插件似乎是 package_info 的替代品。因此,您需要更改的只是 pubspec.yaml 和您的导入。 (我只使用版本,所以可能存在我没有注意到的差异)

    更改 pubspec 和您的导入

    pubspec.yaml:package_info_plus: '&gt;=0.6.3 &lt;2.0.0'

    导入:import 'package:package_info_plus/package_info_plus.dart'

    参考:

    Github issue 46609

    【讨论】:

    • 我同意 github 问题中的 cmets 奇怪的是它们同时具有 package_info_plus 和 package_info。希望他们很快也会在 package_info 中发布 Web 支持,以便 flutter upgrade 回答整个问题并更新您的 package_info 插件。
    【解决方案3】:

    对于那些使用 Linux 并且为了改进 Suragch 的答案的人,我建议使用 bash 脚本自动化构建过程。为此,我们需要两个脚本:一个用于增加版本构建号,另一个用于调用 flutter build 命令本身,转发参数。这样一来,如果您更喜欢手动增加版本构建号,您可以只调用更新脚本,然后稍后“颤振构建”,但如果您想一步完成所有操作,则可以调用构建器脚本。

    您只需要在版本更改时编辑“.app_version”文件。

    “.build_seq”、“.version_number”文件总是被重写,“.app_version”文件只有在没有找到时才会被创建。

    脚本

    updversion.sh

    #!/bin/bash
    
    if [ -f ".app_version" ]; then
        VER=`cat .app_version`
    else
        VER="1.0.0"
        echo $VER > .app_version
    fi
    
    if [ -f ".build_seq" ]; then
        BLD=`cat .build_seq`
    else
        BLD='0'
    fi
    
    ((BLD++))
    echo $BLD > .build_seq
    echo "Ver: $VER ($BLD)" > .current_version
    
    echo "
    // Auto-generated by updversion.sh. Do not edit.
    
    class WebVersionInfo {
      static const String name = '$VER';
      static const int build = $BLD;
    }
    
    " > lib/version_info.dart
    
    exit 0
    

    buildweb.sh

    #!/bin/bash
    
    ./updversion.sh
    
    flutter build web $*
    
    exit $?
    

    【讨论】:

      猜你喜欢
      • 2019-05-09
      • 2019-06-18
      • 2019-03-04
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      相关资源
      最近更新 更多