Ich entwickle derzeit eine Anwendung, die sich derzeit im Beta-Modus befindet. Aus diesem Grund möchte ich ihnen zeigen, auf welcher Version sie sich befinden. Zum Beispiel "v1.0b10 - iOS". Bisher habe ich diesen Code : Text("Build: V1.0b10 - " + (Platform.isIOS ? "iOS" : "Android"))
. Wie könnte ich die Build-Version und -Nummer innerhalb des Flatterns erhalten?
76
Antworten:
Sie können package_info verwenden .
Die Versionen werden extrahiert aus:
Android:
iOS:
Verwendung
Fügen Sie die Abhängigkeit hinzu
dependencies: package_info: ^0.4.0+16
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;
Wenn Sie nicht verwenden möchten
await/async
:PackageInfo.fromPlatform().then((PackageInfo packageInfo) { String appName = packageInfo.appName; String packageName = packageInfo.packageName; String version = packageInfo.version; String buildNumber = packageInfo.buildNumber; });
quelle
Es gibt ein Plugin, mit dem Sie den Versionsnamen und die Versionsnummer ermitteln können.
Fügen Sie die Abhängigkeit hinzu
Fügen Sie in pubspec.yaml das
package_info
Paket hinzu.dependencies: package_info: ^0.4.0+13
Aktualisieren Sie die Versionsnummer auf die aktuelle .
Importieren Sie das Paket
Fügen Sie in der Datei, die Sie benötigen, den folgenden Import hinzu.
import 'package:package_info/package_info.dart';
Holen Sie sich den Versionsnamen und den Code
In Ihrem Code können Sie den Namen und den Code der App-Version wie folgt abrufen:
PackageInfo packageInfo = await PackageInfo.fromPlatform(); String versionName = packageInfo.version; String versionCode = packageInfo.buildNumber;
Siehe auch
quelle
Mit get_version können Sie Informationen zum Versionsnamen der Anwendung, zum Versionscode, zur Plattform- und Betriebssystemversion sowie zur App-ID unter iOS und Android abfragen
Fügen Sie dies Ihrem Paket hinzu
pubspec.yaml
Datei :dependencies: get_version: ^0.2.2
Jetzt können Sie in Ihrem Dart-Code Folgendes verwenden:
import 'package:get_version/get_version.dart';
Gehe zu
build.gradle
und aktualisiere:defaultConfig { versionCode 1 versionName "1.0" minSdkVersion 16 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" }
Wie benutzt man
class _MyAppState extends State<MyApp> { String _platformVersion = 'Unknown'; String _projectVersion = ''; String _projectCode = ''; String _projectAppID = ''; String _projectName = ''; @override initState() { super.initState(); initPlatformState(); } // Platform messages are asynchronous, so we initialize in an async method. initPlatformState() async { String platformVersion; // Platform messages may fail, so we use a try/catch PlatformException. try { platformVersion = await GetVersion.platformVersion; } on PlatformException { platformVersion = 'Failed to get platform version.'; } String projectVersion; // Platform messages may fail, so we use a try/catch PlatformException. try { projectVersion = await GetVersion.projectVersion; } on PlatformException { projectVersion = 'Failed to get project version.'; } String projectCode; // Platform messages may fail, so we use a try/catch PlatformException. try { projectCode = await GetVersion.projectCode; } on PlatformException { projectCode = 'Failed to get build number.'; } String projectAppID; // Platform messages may fail, so we use a try/catch PlatformException. try { projectAppID = await GetVersion.appID; } on PlatformException { projectAppID = 'Failed to get app ID.'; } String projectName; // Platform messages may fail, so we use a try/catch PlatformException. try { projectName = await GetVersion.appName; } on PlatformException { projectName = 'Failed to get app name.'; } // If the widget was removed from the tree while the asynchronous platform // message was in flight, we want to discard the reply rather than calling // setState to update our non-existent appearance. if (!mounted) return; setState(() { _platformVersion = platformVersion; _projectVersion = projectVersion; _projectCode = projectCode; _projectAppID = projectAppID; _projectName = projectName; }); } }
quelle
Sie können das
new_version
Plugin ausprobieren . Mit diesem Plugin können Sie die App-Version, die Playstore-App-Version und die App-URL installieren, die zum Playstore umgeleitet werden können.Neues Versions-Plugin
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); } }); } }
Dialogfeld "Benutzerdefinierte Warnung"
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); } ), ], ) );
quelle