这个插件允许 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/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”
)
- Biyi (比译) - 一个便捷的翻译和词典应用程序。