Newer
Older
concoursenotifyer / lib / main.dart
@d.rzhevskiy d.rzhevskiy on 14 Nov 1 KB init version
import 'dart:io';

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

import 'browser.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  initSystemTray();
  runApp(const ConcourseApp());
}

class ConcourseApp extends StatelessWidget {
  const ConcourseApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
       home: Browser(),
    );
  }
}


Future<void> initSystemTray() async {
  String path =
  Platform.isWindows ? 'assets/app_icon.ico' : 'assets/ico/bug-solid-full.png';

  final AppWindow appWindow = AppWindow();
  final SystemTray systemTray = SystemTray();

  // We first init the systray menu
  await systemTray.initSystemTray(
    title: "system tray",
    iconPath: path,
  );

  // create context menu
  final Menu menu = Menu();
  await menu.buildFrom([



    MenuSeparator(),

    MenuItemLabel(label: 'Open settings', onClicked: (menuItem) => appWindow.show()),


    MenuItemLabel(label: 'Show', onClicked: (menuItem) => appWindow.show()),
    MenuItemLabel(label: 'Hide', onClicked: (menuItem) => appWindow.hide()),



    MenuItemLabel(label: 'Exit', onClicked: (menuItem) => appWindow.close()),
  ]);

  // set context menu
  await systemTray.setContextMenu(menu);

  // handle system tray event
  systemTray.registerSystemTrayEventHandler((eventName) {
    debugPrint("eventName: $eventName");
    if (eventName == kSystemTrayEventClick) {
      Platform.isWindows ? appWindow.show() : systemTray.popUpContextMenu();
    } else if (eventName == kSystemTrayEventRightClick) {
      Platform.isWindows ? systemTray.popUpContextMenu() : appWindow.show();
    }
  });
}