Flutter macOS自动更新插件auto_updater_macos的使用

Flutter macOS自动更新插件auto_updater_macos的使用

auto_updater_macosauto_updater 插件的macOS实现。该插件可以帮助您的Flutter应用在macOS平台上实现自动更新功能。

版本信息

pub version

使用说明

要使用 auto_updater_macos 插件,首先需要将其添加到您的 pubspec.yaml 文件中:

dependencies:
  auto_updater_macos: ^版本号

然后运行以下命令以获取依赖项:

flutter pub get

初始化插件

在使用插件之前,需要初始化它。通常在应用启动时进行初始化:

import 'package:auto_updater_macos/auto_updater_macos.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 初始化插件
    AutoUpdaterMacOs.init();
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

检查更新

为了检查是否有可用的新版本,您可以调用 checkForUpdate() 方法:

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

class _MyHomePageState extends State<MyHomePage> {
  bool _isChecking = false;
  bool _hasUpdate = false;

  Future<void> checkForUpdates() async {
    setState(() {
      _isChecking = true;
    });

    try {
      final result = await AutoUpdaterMacOs.checkForUpdate();
      if (result) {
        setState(() {
          _hasUpdate = true;
        });
      } else {
        setState(() {
          _hasUpdate = false;
        });
      }
    } catch (e) {
      print("Error checking for updates: $e");
    } finally {
      setState(() {
        _isChecking = false;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Auto Updater Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _isChecking ? null : () => checkForUpdates(),
              child: Text(_isChecking ? '检查中...' : '检查更新'),
            ),
            SizedBox(height: 20),
            if (_hasUpdate)
              Text('发现新版本!')
            else if (_isChecking)
              CircularProgressIndicator()
            else
              Text('当前已是最新版本')
          ],
        ),
      ),
    );
  }
}

下载并安装更新

如果检测到有新版本,您可以通过调用 downloadAndInstall() 方法来下载并安装更新:

Future<void> downloadAndInstallUpdate() async {
  try {
    await AutoUpdaterMacOs.downloadAndInstall();
    print('更新已成功下载并安装!');
  } catch (e) {
    print('更新下载或安装失败: $e');
  }
}

您可以在按钮点击事件中调用此方法:

ElevatedButton(
  onPressed: _hasUpdate ? () => downloadAndInstallUpdate() : null,
  child: Text(_hasUpdate ? '下载并安装更新' : '无可用更新'),
),

许可证

auto_updater_macos 插件采用 MIT 许可证。

MIT


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

1 回复

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


当然,下面是一个关于如何在Flutter macOS项目中集成和使用auto_updater_macos插件的示例代码。这个插件可以帮助你实现应用的自动更新功能。

1. 添加依赖

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

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

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

2. 配置Info.plist

在你的macOS项目中的Info.plist文件中,你需要添加一些必要的配置来支持Sparkle更新框架(auto_updater_macos依赖于Sparkle)。

<key>SUFeedURL</key>
<string>https://your-app-update-server/appcast.xml</string>
<key>SUAllowsPromptingForUpdates</key>
<true/>
<key>SUEnableAutomaticChecks</key>
<true/>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string> <!-- 当前应用的版本号 -->
<key>CFBundleVersion</key>
<string>1</string> <!-- 当前应用的构建号 -->

确保将SUFeedURL替换为你的应用更新服务器的实际URL。

3. 创建Appcast XML文件

你的更新服务器需要提供一个Appcast XML文件,该文件包含应用更新的信息。以下是一个简单的Appcast XML示例:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Your App Updates</title>
    <item>
      <title>Version 1.0.1</title>
      <pubDate>Fri, 15 Oct 2021 10:00:00 +0000</pubDate>
      <enclosure url="https://your-app-update-server/YourApp-1.0.1.zip" sparkle:version="1.0.1" sparkle:shortVersionString="1.0.1" length="123456789" type="application/zip"/>
      <sparkle:minimumSystemVersion>10.15</sparkle:minimumSystemVersion>
      <description><![CDATA[
        Release notes for version 1.0.1.
      ]]></description>
    </item>
  </channel>
</rss>

确保将url替换为你的更新文件的实际URL,并调整其他相关信息。

4. 使用auto_updater_macos插件

在你的Flutter应用中,你可以通过以下方式使用auto_updater_macos插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Auto Updater Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              try {
                bool updateAvailable = await AutoUpdaterMacos.checkForUpdates();
                if (updateAvailable) {
                  await AutoUpdaterMacos.installUpdate();
                } else {
                  print("No update available.");
                }
              } catch (e) {
                print("Error checking for updates: $e");
              }
            },
            child: Text('Check for Updates'),
          ),
        ),
      ),
    );
  }
}

5. 运行应用

确保你的macOS开发环境已经设置好,然后运行你的Flutter应用。点击按钮将会触发更新检查,如果有更新可用,将会提示用户进行更新。

注意事项

  • 确保你的更新服务器URL和Appcast XML文件是正确的,并且可以被正常访问。
  • 在生产环境中,建议对更新过程进行更详细的错误处理和用户反馈。
  • 根据需要调整Appcast XML文件中的内容,包括更新说明、版本号和系统要求等。

通过以上步骤,你应该能够在Flutter macOS应用中成功集成和使用auto_updater_macos插件来实现自动更新功能。

回到顶部