我当前正在开发一个处于beta模式的应用程序。因此,我想向他们展示它们的版本。例如,“ v1.0b10-iOS”。到目前为止,我已经收到以下代码:Text("Build: V1.0b10 - " + (Platform.isIOS ? "iOS" : "Android"))。我如何才能在Flutter中获得内部版本和编号?
die*_*per 24
您可以使用package_info。
这些版本摘自:
Android:
build.gradle , versionCode and versionName
Run Code Online (Sandbox Code Playgroud)
iOS:
Info.plist , CFBundleVersion
Run Code Online (Sandbox Code Playgroud)
dependencies:
package_info: ^0.4.0+3
Run Code Online (Sandbox Code Playgroud)
import 'package:package_info/package_info.dart';
Run Code Online (Sandbox Code Playgroud)
async PackageInfo packageInfo = await PackageInfo.fromPlatform();
String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;
Run Code Online (Sandbox Code Playgroud)
如果你不想使用 away/async
PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;
});
Run Code Online (Sandbox Code Playgroud)
Sur*_*gch 23
对于将来的访问者,这是更详细的答案。
有一个插件可以帮助您获取版本名称和版本号。
在pubspec.yaml中添加package_info包。
dependencies:
package_info: ^0.4.0+3
Run Code Online (Sandbox Code Playgroud)
将版本号更新为当前版本号。
在所需的文件中,添加以下导入。
import 'package:package_info/package_info.dart';
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您可以获取应用的版本名称和代码,如下所示:
PackageInfo packageInfo = await PackageInfo.fromPlatform();
String versionName = packageInfo.version;
String versionCode = packageInfo.buildNumber;
Run Code Online (Sandbox Code Playgroud)
后package_info安装,您可以直接与未来的建设者在你的widget树使用它:
FutureBuilder<PackageInfo>(
future: PackageInfo.fromPlatform(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.done:
return Align(
alignment: Alignment.bottomCenter,
child: Text(
'Version: ${snapshot.data!.version}',),
),
);
default:
return const SizedBox();
}
},
),
Run Code Online (Sandbox Code Playgroud)
要从命令行或 CLI 使用它,您需要纯 Dart 代码。
我使用了以下脚本:
// ignore_for_file: avoid_print
import 'dart:io';
import 'package:path/path.dart';
import 'package:yaml/yaml.dart';
String pathToYaml = join(dirname(Platform.script.toFilePath()), '../pubspec.yaml');
Future<YamlMap> loadPubspec() async => loadYaml(await File(pathToYaml).readAsString());
void main() async {
var pubspec = await loadPubspec();
print(pubspec['version'].toString().split('+')[0]);
}
Run Code Online (Sandbox Code Playgroud)
您可以从项目根文件夹运行它:
dart run scripts/get_version_name.dart
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12907 次 |
| 最近记录: |