Flutter应用版本更新插件new_version_update的使用
Flutter应用版本更新插件new_version_update的使用
new_version_update
是一个Flutter插件,用于检查您的应用程序在Apple App Store和Google Play Store上的新版本,并显示更新对话框给用户。
特性
- 检查Apple App Store和Google Play Store上的新应用版本。
- 显示平台特定的警报,带有更新或忽略按钮。
- 提供API获取版本状态(本地、商店、可以更新)以显示自定义UI。
- 支持iOS和Android平台。
- 可自定义对话框标题、文本和按钮文本。
- 支持启动模式定制。
- 支持变更日志展示。
开始使用
首先,在您的 pubspec.yaml
文件中添加依赖:
dependencies:
new_version_update: ^0.0.2
然后运行 flutter pub get
来安装这个包。
示例代码
下面是一个完整的示例演示如何使用 new_version_update
插件来检查并提示用户进行应用更新。
main.dart
import 'package:flutter/material.dart';
import 'package:new_version_update/new_version_update.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'New Version Update Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final newVersionUpdate = NewVersionUpdate(
androidId: 'com.akbon.myd', // 替换为您的Android包名(如果使用默认值可选)
iOSId: 'com.akbon.myd', // 替换为您的iOS bundle标识符(如果使用默认值可选)
isShowChangelog: true, // 设置为false如果您不想显示变更日志
);
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
_checkVersion();
});
}
void _checkVersion() async {
final status = await newVersionUpdate.getVersionStatus();
if (status != null) {
debugPrint('Local Version: ${status.localVersion}');
debugPrint('Store Version: ${status.storeVersion}');
debugPrint('Can Update: ${status.canUpdate}');
debugPrint('App Store Link: ${status.appStoreLink}');
debugPrint('Release Notes: ${status.releaseNotes}');
// 仅当可以更新时显示更新对话框
if (status.canUpdate) {
if (context.mounted) {
newVersionUpdate.showUpdateDialog(
context: context,
versionStatus: status,
dialogText: "You can update this App\nfrom ${status.localVersion} to ${status.storeVersion}\n\nWhat's New:\n${status.releaseNotes}",
allowDismissal: true,
updateButtonText: 'Update Now',
);
}
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('New Version Update Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'Checking for updates...',
style: TextStyle(fontSize: 18),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: _checkVersion,
child: const Text('Check for Update'),
),
],
),
),
);
}
}
以上代码创建了一个简单的Flutter应用,它会在启动时自动检查是否有可用的新版本。如果有新版本,会弹出一个对话框提示用户进行更新。您可以通过修改 androidId
和 iOSId
来适配您的应用。
这段Markdown文档详细介绍了如何使用 `new_version_update` 插件来实现应用版本更新功能,并提供了完整的示例代码。
更多关于Flutter应用版本更新插件new_version_update的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter应用版本更新插件new_version_update的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter应用中使用new_version_update
插件来实现版本更新的一个示例代码案例。这个插件允许你检查当前应用版本与App Store或Play Store上的版本是否一致,并在有新版本时提示用户更新。
首先,你需要在pubspec.yaml
文件中添加new_version_update
依赖:
dependencies:
flutter:
sdk: flutter
new_version_update: ^0.5.0 # 请检查最新版本号
然后运行flutter pub get
来安装依赖。
接下来,在你的Flutter应用的入口文件(通常是main.dart
)中,你可以配置并使用这个插件。以下是一个完整的示例:
import 'package:flutter/material.dart';
import 'package:new_version_update/new_version_update.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
_checkForUpdates();
}
void _checkForUpdates() async {
final NewVersion newVersion = NewVersion(
androidId: 'com.example.yourapp', // 替换为你的Android应用ID
iosId: '123456789', // 替换为你的iOS应用ID(通常是App Store上的ID)
mandatoryUpdate: false, // 是否强制更新
showDialog: true, // 是否显示对话框提示更新
dialogTitle: "更新提示",
dialogMessage: "发现新版本,请更新以获得最佳体验。",
dialogPositiveButtonText: "更新",
dialogNegativeButtonText: "稍后",
apkUrl:
"https://example.com/path/to/your/app.apk", // Android APK下载链接
iosUrl:
"https://apps.apple.com/app/your-app/id123456789", // iOS App Store链接
);
newVersion.getVersion().then((value) {
print("Current version: ${value.localVersion}");
print("Latest version: ${value.storeVersion}");
if (value.shouldShowUpdateDialog) {
newVersion.showUpdateDialog(
context: context,
onClickPositive: () async {
if (value.platform == TargetPlatform.android) {
// 打开APK下载链接
await launchUrl(Uri.parse(newVersion.apkUrl!));
} else if (value.platform == TargetPlatform.iOS) {
// 打开App Store链接
await launchUrl(Uri.parse(newVersion.iosUrl!));
}
},
onClickNegative: () {
// 用户点击稍后
print("User chose to update later.");
},
);
}
}).catchError((error) {
print("Error checking for updates: $error");
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('版本更新示例'),
),
body: Center(
child: Text('检查版本更新...'),
),
);
}
}
注意:
- 替换
androidId
和iosId
为你的实际应用ID。 - 对于Android,确保你的APK下载链接是正确的。
- 对于iOS,通常不需要提供APK下载链接,而是直接打开App Store链接。
- 使用
launchUrl
函数来打开下载链接或App Store页面,你可能需要在pubspec.yaml
中添加对url_launcher
的依赖,并进行相应的导入和使用。
dependencies:
url_launcher: ^6.0.12 # 请检查最新版本号
然后在你的代码中导入并使用它:
import 'package:url_launcher/url_launcher.dart';
确保在调用launchUrl
之前检查链接是否在支持的平台上:
if (await canLaunchUrl(Uri.parse(url))) {
await launchUrl(Uri.parse(url));
} else {
throw 'Could not launch $url';
}
以上代码提供了一个基本的框架,你可以根据自己的需求进一步定制和扩展。