Flutter强制应用升级插件force_upgrader的使用

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

Flutter强制应用升级插件force_upgrader的使用

ForceUpgrader 是一个无意见性的升级插件,用于提示用户升级他们的应用程序,并允许通过回调实现深度定制。

UI

默认对话框尝试保持平台无关性,以便在多个平台上适用。然而,像其他任何东西一样,该对话框也可以轻松替换。

使用

ForceUpgrader 小部件插入到您的小部件树中的任何位置,但最好放在较高的位置。

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '强制升级插件示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const ExampleHome(),
    );
  }
}

class ExampleHome extends StatelessWidget {
  const ExampleHome({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return ForceUpgrader(
      getMinimumVersion: () async => '2.0.0', // 返回最低版本号
      allowSkipCallback: () async => true, // 允许跳过升级
      onDialogDismissed: () {
        debugPrint("跳过了"); // 当用户点击跳过按钮时触发
      },
      child: Scaffold(
        appBar: AppBar(
          title: const Text('强制升级插件示例'),
        ),
      ),
    );
  }
}

更多关于Flutter强制应用升级插件force_upgrader的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter强制应用升级插件force_upgrader的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,force_upgrader 是一个用于强制应用升级的插件。它允许开发者在应用启动时检查是否有新版本,并提示用户升级。以下是一个使用 force_upgrader 插件的示例代码,展示了如何集成和使用这个插件。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 force_upgrader 依赖:

dependencies:
  flutter:
    sdk: flutter
  force_upgrader: ^x.x.x  # 请使用最新版本号

然后运行 flutter pub get 来获取依赖。

2. 配置插件

android/app/src/main/AndroidManifest.xml 中添加互联网权限(如果需要从网络检查版本):

<uses-permission android:name="android.permission.INTERNET"/>

3. 初始化插件并检查版本

在你的 main.dart 文件中,你可以这样使用 force_upgrader 插件:

import 'package:flutter/material.dart';
import 'package:force_upgrader/force_upgrader.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: HomeScreen(),
    );
  }
}

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

class _HomeScreenState extends State<HomeScreen> {
  @override
  void initState() {
    super.initState();
    // 初始化并检查版本
    _checkForUpdates();
  }

  void _checkForUpdates() async {
    // 配置ForceUpgrader
    final ForceUpgrader forceUpgrader = ForceUpgrader(
      apkUrl: 'https://example.com/path/to/your/app.apk', // 新版本APK的URL
      latestVersion: '2.0.0', // 新版本的版本号
      mandatoryUpgrade: true, // 是否强制升级
      ignore: false, // 是否忽略此次检查(一般用于用户选择忽略升级后)
      dialogTitle: '新版本更新',
      dialogMessage: '发现新版本,请立即更新。',
      dialogPositiveButton: '立即更新',
      dialogNegativeButton: '稍后更新',
      dialogCancelButton: '忽略',
      playStoreLink: 'https://play.google.com/store/apps/details?id=com.example.yourapp', // Google Play商店链接(如果适用)
    );

    // 检查是否有新版本
    bool shouldShowUpgradeDialog = await forceUpgrader.checkForUpgrade();

    // 如果需要显示升级对话框,则显示
    if (shouldShowUpgradeDialog) {
      forceUpgrader.showUpgradeDialog(context).then((value) {
        if (value == UpgradeDialogResponse.POSITIVE) {
          // 用户点击了立即更新按钮
          // 你可以在这里启动下载或跳转到下载页面
          // 例如:Navigator.pushNamed(context, '/download');
        } else if (value == UpgradeDialogResponse.NEGATIVE) {
          // 用户点击了稍后更新按钮
        } else if (value == UpgradeDialogResponse.CANCEL) {
          // 用户点击了忽略按钮
          // 可以选择将ignore设置为true以避免重复提示
          forceUpgrader.ignore = true;
        }
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home'),
      ),
      body: Center(
        child: Text('Hello, Flutter!'),
      ),
    );
  }
}

4. 注意事项

  • 在实际应用中,你可能需要从你的服务器或API获取最新版本信息,而不是硬编码在代码中。
  • APK URL 应指向你的新版本APK文件的下载链接。
  • 如果你的应用发布在Google Play商店或其他应用商店,你可能需要处理跳转到商店页面进行更新的逻辑。
  • mandatoryUpgrade 参数设置为 true 时,用户将无法取消或稍后更新,必须升级。

这样,你就成功地集成了 force_upgrader 插件并实现了强制应用升级的功能。

回到顶部