我当前正在开发一个处于beta模式的应用程序。因此,我想向他们展示它们的版本。例如,“ v1.0b10-iOS”。到目前为止,我已经收到以下代码:Text("Build: V1.0b10 - " + (Platform.isIOS ? "iOS" : "Android"))。我如何才能在Flutter中获得内部版本和编号?
die*_*per 24
您可以使用package_info。
这些版本摘自:
Android:
build.gradle  , versionCode and versionName
iOS:
Info.plist  , CFBundleVersion
dependencies:
  package_info: ^0.4.0+3
import 'package:package_info/package_info.dart';
async PackageInfo packageInfo = await PackageInfo.fromPlatform();
String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;
如果你不想使用 away/async
PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
  String appName = packageInfo.appName;
  String packageName = packageInfo.packageName;
  String version = packageInfo.version;
  String buildNumber = packageInfo.buildNumber;
});
Sur*_*gch 23
对于将来的访问者,这是更详细的答案。
有一个插件可以帮助您获取版本名称和版本号。
在pubspec.yaml中添加package_info包。
dependencies:
  package_info: ^0.4.0+3
将版本号更新为当前版本号。
在所需的文件中,添加以下导入。
import 'package:package_info/package_info.dart';
在您的代码中,您可以获取应用的版本名称和代码,如下所示:
PackageInfo packageInfo = await PackageInfo.fromPlatform();
String versionName = packageInfo.version;
String versionCode = packageInfo.buildNumber;
后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();
                }
              },
            ),
要从命令行或 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