[英]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.yaml
和WebVersionInfo
的版本和構建信息。
如果您使用 beta 頻道,您可以使用package_info_plus插件,該插件似乎是 package_info 的替代品。 因此,您需要更改的只是 pubspec.yaml 和您的導入。 (我只使用版本,所以可能存在我沒有注意到的差異)
pubspec.yaml: package_info_plus: '>=0.6.3 <2.0.0'
導入: import 'package:package_info_plus/package_info_plus.dart'
對於那些使用 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.