import 'dart:async'; import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:launch_at_startup/launch_at_startup.dart'; import 'constant.dart'; import 'system.dart'; class AutoLaunch { static AutoLaunch? _instance; AutoLaunch._internal() { launcher.setup(appName: appName, appPath: Platform.resolvedExecutable); } factory AutoLaunch() { _instance ??= AutoLaunch._internal(); return _instance!; } @visibleForTesting static LaunchAtStartup launcher = launchAtStartup; Future get isEnable async { return launcher.isEnabled(); } Future enable() async { return launcher.enable(); } Future disable() async { return launcher.disable(); } Future updateStatus(bool isAutoLaunch) async { if (kDebugMode) { return; } if (await isEnable == isAutoLaunch) return; if (isAutoLaunch == true) { unawaited(enable()); } else { unawaited(disable()); } } } final autoLaunch = system.isDesktop && !safeModeBuild ? AutoLaunch() : null;