如何得到构建和版本号的扑动应用程序

我目前正在开发一个应用程序,目前在测试模式。正因如此,我想向他们展示一下他们正在播放的是哪个版本。例如,“ v1.0 b10-iOS”。到目前为止,我得到了这个代码: Text("Build: V1.0b10 - " + (Platform.isIOS ? "iOS" : "Android"))。我如何能够得到构建版本和数字在扑动?

154648 次浏览

你可以使用 Package _ info _ plus

版本摘录自:

安卓:

build.gradle, versionCode and versionName

IOS:

Info.plist, CFBundleVersion

用法

添加依赖项

  1. 将其添加到包的 pubspec.yaml 文件中:
dependencies:
package_info_plus: ^1.0.6
  1. 导入文件到您的 Dart 文件:
import 'package:package_info_plus/package_info_plus.dart';
  1. 如果你的方法被标记为 async:
PackageInfo packageInfo = await PackageInfo.fromPlatform();


String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;

如果你不想使用 await/async:

PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;
});

注意 : 这个答案已经更新,以反映 Package _ info插件已被弃用并重定向到 Package _ info _ plus的事实。

版本名称和版本号

在开发阶段,您可以通过检查 Pubspec.yaml轻松找到 Flutter 或 Dart 项目的版本名称和构建编号。这里有一个例子:

version: 1.1.0+2

在这种情况下,版本名称是 1.1.0,构建编号是 2

然而,如果你想在运行时获得这些值,你应该使用一个插件。

添加依赖项

Pubspec.yaml中添加 package_info_plus包。

dependencies:
package_info_plus: ^1.0.2

将版本号更新为 目前版本号。

导入包裹

在需要它的文件中,添加以下导入。

import 'package:package_info_plus/package_info_plus.dart';

获取版本名称和代码

在你的代码中,你可以得到应用程序的版本名称和代码如下:

PackageInfo packageInfo = await PackageInfo.fromPlatform();
String version = packageInfo.version;
String code = packageInfo.buildNumber;

参见

你可以试试 new_version插件。使用这个插件,你可以得到安装的应用程序版本,Playstore 应用程序版本和应用程序网址,可以重定向到播放商店。

新版插件

void versionCheck() async {
final NewVersion newVersion = NewVersion(context: context);
VersionStatus versionStatus = await newVersion.getVersionStatus();
if (versionStatus != null && versionStatus.canUpdate) {
await ConfirmDialog(
context: context,
title: 'Update Available',
body: Text('A new version, ${versionStatus.storeVersion}, is available.'),
acceptButton: 'Update Now',
cancelButton: 'Update Later'
).then((ConfirmAction res) async {
if (res == ConfirmAction.CONFIRM && await canLaunch(versionStatus.appStoreLink)) {
await launch(versionStatus.appStoreLink, forceWebView: false);
}
});
}
}

“自定义警报”对话框

enum ConfirmAction{ CONFIRM, CANCEL }
Future<ConfirmAction> ConfirmDialog({
BuildContext context,
String title,
Widget body,
String acceptButton,
String cancelButton
})
=> showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) => AlertDialog(
title: Wrap(
crossAxisAlignment: WrapCrossAlignment.center,
spacing: 4,
children: <Widget>[
Text(title)
],
),
content: Wrap(
runSpacing: 10,
children: <Widget>[
body,
],
),
actions: <Widget>[
FlatButton(
padding: EdgeInsets.all(6),
child: Text(acceptButton ?? 'Confirm'),
onPressed: (){
Navigator.of(context, rootNavigator: true).pop(ConfirmAction.CONFIRM);
}
),
FlatButton(
padding: EdgeInsets.all(6),
child: Text(cancelButton ?? 'Cancel'),
onPressed: (){
Navigator.of(context, rootNavigator: true).pop(ConfirmAction.CANCEL);
}
),
],
)
);

安装 Package _ info _ plus,然后你可以直接使用它与未来的构建器在你的小部件树:

 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();
}
},
),

package_info的多个参考,请注意这个软件包已经过时,建议更换的是 Flutter Community Plus Plugins 颤动社区 + 插件版本,Package _ info _ plus

要从命令行或 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]);
}

您可以从项目根文件夹运行它:

dart run scripts/get_version_name.dart

在 Flutter 移动应用程序的版本号是在 pubspec.yaml文件。如下:

version: 1.0.0+1

要获取版本名称和代码,请将 package_info依赖项添加到 pubspec.yaml文件中,如下所示:

dependencies:
package_info: ^0.4.0+16

还有

import 'package:package_info/package_info.dart'; // import the package_info


Future<void> _initPackageInfo() async {
final _packageInfo = await PackageInfo.fromPlatform();
setState(() {
String AppName = _packageInfo.appName;
String PackageName = _packageInfo.packageName;
String AppVersion = _packageInfo.version;
String BuildNumber = _packageInfo.buildNumber;
String BuildSignature = _packageInfo.buildSignature;
});
}