簡體   English   中英

如何獲取 Flutter Web 應用程序的構建和版本號

[英]How to get build and version number of Flutter Web app

這里的關鍵字是Web 我可以使用package_info插件獲取 Flutter 應用程序的構建和版本號,但如果它在網絡上運行,我就不能。 如何獲取 Flutter Web 應用程序的包信息?

我將在下面提供一個答案作為臨時修復,但我正在尋找一種從 pubspec.yaml 獲取版本信息的解決方案。

作為臨時解決方法,您可以創建一個包含版本信息的單獨文件:

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的版本和構建信息。

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

更改 pubspec 和您的導入

pubspec.yaml: package_info_plus: '>=0.6.3 <2.0.0'

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

參考:

Github 問題 46609

對於那些使用 Linux 的人,為了改進 Suragch 的答案,我建議使用 bash 腳本自動化構建過程。 為此,我們需要兩個腳本:一個用於增加版本構建號,另一個用於調用 flutter build 命令本身,轉發參數。 這樣,如果您更喜歡手動增加版本構建號,您可以只調用更新腳本,然后稍后調用“flutter build”,但如果您想一步完成所有操作,則可以調用構建器腳本。

您只需要在版本更改時編輯“.app_version”文件。

'.build_seq'、'.version_number' 文件總是被重寫,並且只有在找不到時才會創建 '.app_version' 文件。

腳本

更新版本.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

構建web.sh

#!/bin/bash

./updversion.sh

flutter build web $*

exit $?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM