Flutter应用商店版本检查插件store_version_checker的使用

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

Flutter应用商店版本检查插件store_version_checker的使用

安装

将App Version Checker添加到您的pubspec.yaml文件中:

dependencies:
  store_version_checker: any # 或者在Pub上最新的版本

使用方法

以下是如何使用store_version_checker插件来检查应用商店中的最新版本信息。首先,初始化一个StoreVersionChecker对象,并在initState方法中调用checkVersion方法。

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

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 初始化 StoreVersionChecker 对象
  final _checker = StoreVersionChecker();

  String? versionInfo;

  [@override](/user/override)
  void initState() {
    super.initState();
    checkVersion(); // 调用检查版本的方法
  }

  // 异步检查更新
  void checkVersion() async {
    await _checker.checkUpdate().then((value) {
      // 打印是否可以更新
      print(value.canUpdate); // 如果有更新则返回true
      // 当前应用版本
      print(value.currentVersion);
      // 新的应用版本
      print(value.newVersion);
      // 应用商店URL
      print(value.appURL);
      // 错误信息(如果有)
      print(value.errorMessage);
      
      setState(() {
        versionInfo = "当前版本: ${value.currentVersion}, 新版本: ${value.newVersion}";
      });
    }).catchError((error) {
      setState(() {
        versionInfo = "获取版本信息失败";
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('版本检查'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(12.0),
          child: ListView(
            children: [
              const SizedBox(height: 25.0),
              const Text(
                "应用版本信息",
                style: TextStyle(fontWeight: FontWeight.bold),
              ),
              const SizedBox(height: 10.0),
              Text(
                versionInfo ?? '加载中...',
              ),
            ],
          ),
        ),
      ),
    );
  }
}

示例代码

以下是一个完整的示例代码,展示了如何同时检查多个应用的版本信息:

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

import 'package:store_version_checker/store_version_checker.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 初始化两个不同的 StoreVersionChecker 对象
  final _youtubeChecker = StoreVersionChecker(
    appId: "com.vanced.android.youtube",
    androidStore: AndroidStore.apkPure,
  );

  final _snapChatChecker = StoreVersionChecker(appId: "com.snapchat.android");

  String? snapValue;
  String? youtubeValue;

  [@override](/user/override)
  void initState() {
    super.initState();
    checkVersion(); // 调用检查版本的方法
  }

  // 异步检查多个应用的版本信息
  void checkVersion() async {
    await Future.wait([
      _snapChatChecker
          .checkUpdate()
          .then((value) => snapValue = value.toString()),
      _youtubeChecker
          .checkUpdate()
          .then((value) => youtubeValue = value.toString()),
    ]);

    setState(() {}); // 更新UI
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('APP 版本检查器'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(12.0),
          child: ListView(
            children: [
              const SizedBox(height: 25.0),
              const Text(
                "Snapchat (Google Play):",
                style: TextStyle(fontWeight: FontWeight.bold),
              ),
              const SizedBox(height: 10.0),
              Text(
                snapValue ?? '加载中...',
              ),
              const SizedBox(height: 50.0),
              const Text(
                "YouTube Vanced (APK Pure):",
                style: TextStyle(fontWeight: FontWeight.bold),
              ),
              const SizedBox(height: 10.0),
              Text(
                youtubeValue ?? "加载中...",
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter应用中使用store_version_checker插件来检查应用商店版本的示例代码。

首先,确保你已经在pubspec.yaml文件中添加了store_version_checker依赖:

dependencies:
  flutter:
    sdk: flutter
  store_version_checker: ^x.y.z  # 替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中按照以下步骤使用store_version_checker插件:

  1. 导入插件

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

import 'package:store_version_checker/store_version_checker.dart';
  1. 检查版本

使用StoreVersionChecker类来检查当前安装的应用版本与应用商店中的版本是否一致。以下是一个完整的示例,展示如何在应用启动时进行检查,并显示一个对话框(如果检测到有新版本)。

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

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

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

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

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

  Future<void> _checkForUpdates() async {
    final StoreVersionChecker versionChecker = StoreVersionChecker();

    try {
      final VersionInfo localVersion = await versionChecker.getLocalAppVersion();
      final VersionInfo storeVersion = await versionChecker.getAppStoreVersion();

      if (localVersion.version != storeVersion.version) {
        // 有新版本可用
        showDialog(
          context: context,
          builder: (BuildContext context) {
            return AlertDialog(
              title: Text('新版本可用'),
              content: Text('当前版本: ${localVersion.version}, 应用商店版本: ${storeVersion.version}'),
              actions: <Widget>[
                FlatButton(
                  child: Text('去更新'),
                  onPressed: () {
                    // 打开应用商店页面(需要平台特定代码)
                    if (Platform.isAndroid) {
                      versionChecker.openPlayStore();
                    } else if (Platform.isIOS) {
                      versionChecker.openAppStore();
                    }
                    Navigator.of(context).pop();
                  },
                ),
                FlatButton(
                  child: Text('取消'),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
              ],
            );
          },
        );
      } else {
        // 没有新版本
        print('当前版本已是最新: ${localVersion.version}');
      }
    } catch (e) {
      print('检查版本时出错: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('版本检查示例'),
      ),
      body: Center(
        child: Text('检查中...'),
      ),
    );
  }
}

注意

  • 在iOS上,你需要提供iTunes Connect中的应用ID。你可以在Info.plist中添加一个键ITunesConnectAppId来设置它。
  • 在Android上,确保你的应用已在Google Play商店发布,并且你有适当的权限来访问这些信息。

这个示例代码展示了如何在Flutter应用中集成并使用store_version_checker插件来检查是否有新版本的应用商店版本可用,并在检测到新版本时提示用户更新。

回到顶部