Skip to content

Latest commit

 

History

History
180 lines (125 loc) · 5.06 KB

README-ZH.md

File metadata and controls

180 lines (125 loc) · 5.06 KB

launch_at_startup

pub version

这个插件允许 Flutter 桌面应用在启动/登录时自动启动。


English | 简体中文


平台支持

Linux macOS* Windows
✔️ ✔️ ✔️

*所需的 MACOS 支持安装说明

快速开始

安装

将此添加到你的软件包的 pubspec.yaml 文件:

dependencies:
  launch_at_startup: ^0.3.1

dependencies:
  launch_at_startup:
    git:
      url: https://github.com/leanflutter/launch_at_startup.git
      ref: main

用法

import 'dart:io';

import 'package:launch_at_startup/launch_at_startup.dart';
import 'package:package_info_plus/package_info_plus.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  PackageInfo packageInfo = await PackageInfo.fromPlatform();

  launchAtStartup.setup(
    appName: packageInfo.appName,
    appPath: Platform.resolvedExecutable,
    // 设置 packageName 参数以支持 MSIX。
    packageName: 'dev.leanflutter.examples.launchatstartupexample',
  );

  await launchAtStartup.enable();
  await launchAtStartup.disable();
  bool isEnabled = await launchAtStartup.isEnabled();

  runApp(const MyApp());
}

// ...

请看这个插件的示例应用,以了解完整的例子。

macOS 支持

设置

将平台通道代码添加到您的 macos/Runner/MainFlutterWindow.swift 文件。

import Cocoa
import FlutterMacOS
// Add the LaunchAtLogin module
import LaunchAtLogin
//

class MainFlutterWindow: NSWindow {
  override func awakeFromNib() {
    let flutterViewController = FlutterViewController.init()
    let windowFrame = self.frame
    self.contentViewController = flutterViewController
    self.setFrame(windowFrame, display: true)

    // Add FlutterMethodChannel platform code
    FlutterMethodChannel(
      name: "launch_at_startup", binaryMessenger: flutterViewController.engine.binaryMessenger
    )
    .setMethodCallHandler { (_ call: FlutterMethodCall, result: @escaping FlutterResult) in
      switch call.method {
      case "launchAtStartupIsEnabled":
        result(LaunchAtLogin.isEnabled)
      case "launchAtStartupSetEnabled":
        if let arguments = call.arguments as? [String: Any] {
          LaunchAtLogin.isEnabled = arguments["setEnabledValue"] as! Bool
        }
        result(nil)
      default:
        result(FlutterMethodNotImplemented)
      }
    }
    //

    RegisterGeneratedPlugins(registry: flutterViewController)

    super.awakeFromNib()
  }
}

然后在 Xcode 中打开macos/文件夹,然后执行以下操作:

引用的说明 "LaunchAtLogin" 软件包存储库. 阅读以获取更多详细信息和常见问题解答。

要求

macOS 10.13+

安装

添加 https://github.com/sindresorhus/LaunchAtLogin 在里面 “Swift Package Manager” XCode 中的选项卡.

用法

如果您的应用程序将 MACOS 13 或更高版本定为目标,则跳过此步骤。

添加一个新“Run Script Phase” 以下 (不进入)“Copy Bundle Resources” 在 “Build Phases” 与以下内容:

"${BUILT_PRODUCTS_DIR}/LaunchAtLogin_LaunchAtLogin.bundle/Contents/Resources/copy-helper-swiftpm.sh"

并取消选中“Based on dependency analysis”.

构建阶段无法运行"User Script Sandboxing"启用。使用 XCode 15 或默认情况下启用 XCode 15,请禁用"User Script Sandboxing"在构建设置中。

(它需要一些额外的作品才能让我们的脚本符合构建相位沙箱。) (我会命名运行脚本Copy “Launch at Login Helper”)

谁在用使用它?

许可证

MIT