Flutter应用更新插件feggy_updater的使用

Flutter应用更新插件feggy_updater的使用

在Flutter中,feggy_updater 是一个用于实现应用自动更新功能的插件。通过该插件,你可以轻松地为你的应用添加检查更新、下载更新包以及安装更新的功能。

安装插件

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

dependencies:
  feggy_updater: ^1.0.0

然后运行 flutter pub get 来获取该插件。

初始化插件

在你的 main.dart 文件中初始化 feggy_updater 插件,并配置更新服务器地址和其他参数。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('应用更新插件示例'),
        ),
        body: UpdatePage(),
      ),
    );
  }
}

class UpdatePage extends StatefulWidget {
  [@override](/user/override)
  _UpdatePageState createState() => _UpdatePageState();
}

class _UpdatePageState extends State<UpdatePage> {
  final updater = FeggyUpdater();

  [@override](/user/override)
  void initState() {
    super.initState();
    
    // 配置更新服务器地址
    updater.configure(
      serverUrl: 'https://your-update-server.com',
      appVersion: '1.0.0',
      appName: 'My Awesome App',
      androidPackageName: 'com.yourcompany.myawesomeapp',
    );

    // 检查更新
    checkForUpdates();
  }

  void checkForUpdates() async {
    try {
      final updateInfo = await updater.checkForUpdate();
      if (updateInfo.updateAvailable) {
        // 显示更新提示
        showUpdateDialog(updateInfo);
      } else {
        print('当前已是最新版本');
      }
    } catch (e) {
      print('检查更新失败: $e');
    }
  }

  void showUpdateDialog(UpdateInfo updateInfo) {
    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: Text('发现新版本'),
          content: Text('版本号: ${updateInfo.version}'),
          actions: [
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: Text('取消'),
            ),
            TextButton(
              onPressed: () async {
                Navigator.of(context).pop();
                // 开始下载更新包
                await updater.downloadUpdate();
                // 安装更新
                updater.installUpdate();
              },
              child: Text('更新'),
            ),
          ],
        );
      },
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        onPressed: checkForUpdates,
        child: Text('检查更新'),
      ),
    );
  }
}

更多关于Flutter应用更新插件feggy_updater的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


feggy_updater 是一个用于 Flutter 应用程序的插件,旨在帮助开发者轻松实现应用内更新功能。它允许你在应用中检查更新、下载更新包,并在用户同意后安装更新。以下是如何在 Flutter 应用中使用 feggy_updater 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  feggy_updater: ^1.0.0  # 请使用最新的版本

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

2. 初始化 feggy_updater

在你的 main.dart 文件中初始化 feggy_updater

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 feggy_updater
  await FeggyUpdater.initialize(
    baseUrl: 'https://your-update-server.com', // 更新服务器的URL
    appId: 'com.example.yourapp', // 应用的包名
  );

  runApp(MyApp());
}

3. 检查更新

你可以在应用的某个地方(例如在 initState 中)检查更新:

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    _checkForUpdate();
  }

  Future<void> _checkForUpdate() async {
    try {
      final updateInfo = await FeggyUpdater.checkForUpdate();
      if (updateInfo != null && updateInfo.updateAvailable) {
        _showUpdateDialog(updateInfo);
      }
    } catch (e) {
      print('Error checking for update: $e');
    }
  }

  void _showUpdateDialog(UpdateInfo updateInfo) {
    showDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text('Update Available'),
          content: Text('A new version of the app is available. Do you want to update?'),
          actions: <Widget>[
            TextButton(
              child: Text('Later'),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
            TextButton(
              child: Text('Update Now'),
              onPressed: () {
                Navigator.of(context).pop();
                _startUpdate(updateInfo);
              },
            ),
          ],
        );
      },
    );
  }

  void _startUpdate(UpdateInfo updateInfo) async {
    try {
      await FeggyUpdater.startUpdate(updateInfo);
    } catch (e) {
      print('Error starting update: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

4. 处理更新进度

你可以在 _startUpdate 方法中监听更新进度,并在 UI 中显示进度条:

void _startUpdate(UpdateInfo updateInfo) async {
  try {
    FeggyUpdater.onDownloadProgress.listen((progress) {
      print('Download progress: $progress%');
      // 更新 UI 中的进度条
    });

    await FeggyUpdater.startUpdate(updateInfo);
  } catch (e) {
    print('Error starting update: $e');
  }
}
回到顶部