Как свернуть приложение Flutter на рабочем столе в системный трей?

Я создаю настольное приложение Flutter, и я хотел бы оставить приложение запущенным на панели задач, а не просто закрывать его.

3 ответа

С помощью window_manager вы можете скрыть окно, а не закрывать его.

в main.dart

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // Must add this line.
  await windowManager.ensureInitialized();

  WindowOptions windowOptions = WindowOptions(
    size: Size(800, 600),
    center: true,
    backgroundColor: Colors.transparent,
    skipTaskbar: false,
    titleBarStyle: TitleBarStyle.hidden,
  );
  windowManager.waitUntilReadyToShow(windowOptions, () async {
    await windowManager.show();
  });

  runApp(MyApp());
}

Чтобы скрыть окно приложения для MacOS, верните false в applicationShouldTerminateAfterLastWindowClosed import Cocoa import FlutterMacOS

      @NSApplicationMain
class AppDelegate: FlutterAppDelegate {
  override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
     return false
  }
}

вызовите windowManager.hide() , если вы хотите скрыть окно.

вызовите windowManager.show() , когда вы хотите показать окно

      void _hideWindow() {
  windowManager.hide() // will hide the window and the app will be running in the background
}

void _showWindow() {
  windowManager.show() // will show the window
}

Работая над вашим запросом, я нашел следующие ссылки, которые могут быть полезны

https://github.com/google/flutter-desktop-embedding/issues/595

https://medium.com/stuart-engineering/%EF%B8%8F-the-tricky-task-of-keeping-flutter-running-on-android-2d51bbc60882

Описательная / точная документация для самой команды flutter все еще находится в разработке. Вскоре будут добавлены многие другие функции.

Я создал пример сворачивания в трей, в настоящее время он работает только на macOS, в будущем я буду поддерживать его в Windows и Linux.

https://github.com/leanflutter/flutter_desktop_examples/tree/main/minimize_to_tray_example

Другие вопросы по тегам