提问者:小点点

如何获取Flutter Web应用程序的构建和版本号


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

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


共3个答案

匿名用户

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

web_version_info. dart

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

您可以将其用于所有平台,或者在您的代码中,您可以使用kIsWeb将其用于Web:

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

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

匿名用户

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

package_info_plus:

import:import'包:package_info_plus/package_info_plus. dart'

Github问题46609

匿名用户

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

您只需要在版本更改时编辑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 $?