tray_manager: ^0.2.0
class HomePage extends BaseWidget with TrayListener, WindowListener {
List<Widget> tabViews = [];
List<TabItem> tabMenuList = [];
int selectedIndex = 1;
bool showTabBar = true;
@override
void initState() {
super.initState();
initListener();
initTray();
void initTray() async {
await trayManager.setIcon('assets/images/app_icon.ico');
List<MenuItem> items = [
MenuItem(
key: 'show',
label: '显示窗口',
),
MenuItem(
key: 'exit',
label: '退出',
),
];
await trayManager.setContextMenu(Menu(items: items));
}
@override
void onWindowClose()async {
await windowManager.hide();
}
void initListener() {
windowManager.addListener(this);
trayManager.addListener(this);
}
@override
void dispose() {
windowManager.removeListener(this);
trayManager.removeListener(this);
super.dispose();
}
@override
void onTrayIconRightMouseDown() {
trayManager.popUpContextMenu();
}
@override
void onTrayIconMouseDown() async{
await windowManager.show();
await windowManager.focus();
}
@override
void onTrayMenuItemClick(MenuItem menuItem) async {
switch (menuItem.key) {
case 'show':
await windowManager.show();
await windowManager.focus();
break;
case 'exit':
await trayManager.destroy();
await windowManager.close();
break;
}
}