Как свернуть приложение 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
Описательная / точная документация для самой команды flutter все еще находится в разработке. Вскоре будут добавлены многие другие функции.
Я создал пример сворачивания в трей, в настоящее время он работает только на macOS, в будущем я буду поддерживать его в Windows и Linux.
https://github.com/leanflutter/flutter_desktop_examples/tree/main/minimize_to_tray_example