Flutter版本检测插件new_version的使用

发布于 1周前 作者 gougou168 来自 Flutter

Flutter版本检测插件new_version的使用

new_version 是一个Flutter插件,用于检查用户是否安装了应用程序的最新版本,并在需要时显示一个带有应用商店链接的提示框。

功能

  • 检查用户是否安装了应用程序的最新版本。
  • 显示一个提示框,引导用户到相应的应用商店页面进行更新。

安装

pubspec.yaml 文件中添加 new_version 作为依赖:

dependencies:
  new_version: ^0.3.0

使用

在你的 main.dart 或者其他初始化的地方创建 NewVersion 实例。

final newVersion = NewVersion();

该插件会自动使用你的Flutter包标识符来检查应用商店。如果你的应用在Google Play Store或Apple App Store中有不同的标识符,可以通过提供 androidId 和/或 iOSId 来覆盖默认值。

iOS 注意事项

如果您的应用程序仅在非美国应用商店可用,则需要设置 iOSAppStoreCountry 为相应国家代码(例如:'cn' 对应中国)。

快速开始

调用 showAlertIfNecessary 方法并传入你的应用程序的 BuildContext 将会检查应用程序是否有更新,并自动显示平台特定的提示框,用户可以点击此提示框前往应用商店。

newVersion.showAlertIfNecessary(context: context);

高级用法 😎

如果你想创建自定义提示框或以不同方式使用应用程序版本信息,可以调用 getVersionStatus 方法。这将返回一个包含本地和应用商店版本信息的 Future<VersionStatus>

final status = await newVersion.getVersionStatus();
print(status.canUpdate); // (true)
print(status.localVersion); // (1.2.1)
print(status.storeVersion); // (1.2.3)
print(status.appStoreLink); // (https://itunes.apple.com/us/app/google/id284815942?mt=8)

你可以将 VersionStatus 传递给 showUpdateDialog() 方法以展示自定义对话框。

newVersion.showUpdateDialog(
  context: context, 
  versionStatus: status,
  dialogTitle: 'Custom dialog title',
  dialogText: 'Custom dialog text',
  updateButtonText: 'Custom update button text',
  dismissButtonText: 'Custom dismiss button text',
  dismissAction: () => functionToRunAfterDialogDismissed(),
);

示例代码

以下是一个完整的示例应用,演示如何使用 new_version 插件:

import 'package:flutter/material.dart';
import 'package:new_version/new_version.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();

    final newVersion = NewVersion(
      iOSId: 'com.google.Vespa',
      androidId: 'com.google.android.apps.cloudconsole',
    );

    const simpleBehavior = true;

    if (simpleBehavior) {
      basicStatusCheck(newVersion);
    } else {
      advancedStatusCheck(newVersion);
    }
  }

  void basicStatusCheck(NewVersion newVersion) {
    newVersion.showAlertIfNecessary(context: context);
  }

  Future<void> advancedStatusCheck(NewVersion newVersion) async {
    final status = await newVersion.getVersionStatus();
    if (status != null) {
      debugPrint(status.releaseNotes);
      debugPrint(status.appStoreLink);
      debugPrint(status.localVersion);
      debugPrint(status.storeVersion);
      debugPrint(status.canUpdate.toString());
      newVersion.showUpdateDialog(
        context: context,
        versionStatus: status,
        dialogTitle: 'Custom Title',
        dialogText: 'Custom Text',
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Example App"),
      ),
    );
  }
}

这个示例展示了如何通过简单和高级两种方式来集成 new_version 插件,确保用户能够及时获得应用程序的最新版本。


更多关于Flutter版本检测插件new_version的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter版本检测插件new_version的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用new_version插件来检测应用版本更新的代码示例。这个插件允许你检查当前应用的版本与Play Store或App Store上的最新版本是否一致,并提示用户进行更新。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加new_version插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  new_version: ^0.13.0  # 请检查最新版本号

2. 导入插件

在你的Dart文件中导入new_version插件:

import 'package:new_version/new_version.dart';
import 'package:flutter/material.dart';

3. 检查版本更新

接下来,你可以在你的应用中添加逻辑来检查版本更新。通常,这会在应用启动时或在某个特定的页面/按钮点击事件中完成。

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Version Checker'),
        ),
        body: Center(
          child: VersionChecker(),
        ),
      ),
    );
  }
}

class VersionChecker extends StatefulWidget {
  @override
  _VersionCheckerState createState() => _VersionCheckerState();
}

class _VersionCheckerState extends State<VersionChecker> {
  @override
  void initState() {
    super.initState();
    _checkForUpdates();
  }

  Future<void> _checkForUpdates() async {
    NewVersion newVersion = NewVersion();

    // 获取当前应用的版本信息
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    String currentVersion = packageInfo.version;
    String packageName = packageInfo.packageName;

    // 配置new_version插件
    newVersion.showAlert(
      mandatoryUpdate: false, // 是否强制更新
      packageName: packageName,
      versionCode: packageInfo.versionCode,
      ignore: currentVersion, // 当前版本号,用于比较
      forceUpdateFrom: null, // 从哪个版本开始强制更新
      androidStoreLink: 'https://play.google.com/store/apps/details?id=$packageName', // Google Play商店链接
      iosStoreLink: 'https://apps.apple.com/app/id<YOUR_APP_ID>/', // App Store链接
      // 自定义对话框标题和消息(可选)
      alertTitle: "New Version Available",
      alertMessage: "Please update the app to the latest version.",
      alertPositiveButton: "Update",
      alertNegativeButton: "Later",
      // 自定义按钮点击事件(可选)
      onAlertPositiveButtonPressed: () async {
        // 打开应用商店页面
        if (Platform.isAndroid) {
          await newVersion.openAppStore(androidStoreLink: newVersion.androidStoreLink);
        } else if (Platform.isIOS) {
          await newVersion.openAppStore(iosStoreLink: newVersion.iosStoreLink);
        }
      },
      onAlertNegativeButtonPressed: () {
        // 用户选择稍后更新
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Text("Checking for updates...");
  }
}

注意事项

  1. iOS Store Link: 对于iOS,你需要将iosStoreLink中的<YOUR_APP_ID>替换为你的应用ID。
  2. 权限: 确保你的应用在AndroidManifest.xmlInfo.plist中拥有必要的权限和配置,以便能够访问应用商店链接。
  3. 测试: 在发布之前,确保在开发和生产环境中测试版本检查功能。

这个示例展示了如何使用new_version插件来检查应用的版本更新,并在有新版本可用时提示用户进行更新。根据需求,你可以进一步自定义和扩展此功能。

回到顶部