zego_zim 3.2.0 copy "zego_zim: ^3.2.0" to clipboard
zego_zim: ^3.2.0 copied to clipboard

[pending analysis]

ZEGO ZIM Flutter SDK is a flutter plugin wrapper based on ZIM native Android / iOS / Mac / Win / Web SDK.

example/lib/main.dart

import 'dart:io';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter/foundation.dart';
import 'package:zego_zim_example/topics/login/user_model.dart';
import 'package:zego_zim_example/providers/app_config.dart';
import 'package:zego_zim_example/theme/app_theme.dart';

import 'dart:async';
import 'package:window_manager/window_manager.dart';
import 'package:zego_zim_example/topics/splash/splash_page.dart';
import 'package:flutter/material.dart';
import 'package:tray_manager/tray_manager.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AppConfig().init();
  if (!kIsWeb && (Platform.isMacOS || Platform.isWindows)) {
    await windowManager.ensureInitialized();

    await windowManager.setPreventClose(true);
    windowManager.addListener(MyWindowListener());

    WindowOptions windowOptions = const WindowOptions(
      //titleBarStyle: TitleBarStyle.hidden, // 隐藏顶部标题栏
      size: Size(1200, 800),
      center: true,
    );

    windowManager.waitUntilReadyToShow(windowOptions, () async {
      await windowManager.show();
      await windowManager.focus();
    });
  }
  runApp(
    ProviderScope(
      child: MaterialApp(
        title: 'ZIM',
        debugShowCheckedModeBanner: false,
        theme: AppTheme.light,
        home: //GroupSetPage()
            SplashPage(),
        navigatorObservers: [UserModel.shared().routeObserver],
      ),
    ),
  );

  if (!kIsWeb && (Platform.isMacOS || Platform.isWindows)) {
    await trayManager.setIcon(
      Platform.isWindows ? 'images/tray_icon.ico' : 'lib/images/tray_icon.png',
    );
    Menu menu = Menu(
      items: [
        MenuItem(key: 'show_window', label: 'Show Window'),
        MenuItem.separator(),
        MenuItem(key: 'exit_app', label: 'Exit App'),
      ],
    );
    await trayManager.setContextMenu(menu);
    trayManager.addListener(MyTrayListener());
  }
}

class MyWindowListener with WindowListener {
  @override
  void onWindowClose() async {
    // 这里如果有资源需要释放可以先处理
    // 比如 trayManager.removeListener(...) 之类的

    // 直接结束进程
    exit(0);
  }
}

class MyTrayListener with TrayListener {
  /// 左键点击托盘 → 显示/隐藏窗口
  @override
  void onTrayIconMouseDown() async {
    bool isVisible = await windowManager.isVisible();
    bool isFocused = await windowManager.isFocused();

    if (!isVisible) {
      // 窗口不可见 → 显示并获取焦点
      await windowManager.show();
      await windowManager.focus();
    } else if (!isFocused) {
      // 窗口可见但未获取焦点 → 聚焦
      await windowManager.focus();
    } else {}
  }

  /// 右键松开 → 弹出菜单
  @override
  void onTrayIconRightMouseUp() {
    trayManager.popUpContextMenu();
  }

  /// 菜单项点击
  @override
  void onTrayMenuItemClick(MenuItem menuItem) {
    if (menuItem.key == 'show_window') {
      windowManager.show();
      windowManager.focus();
    } else if (menuItem.key == 'exit_app') {
      exit(0);
    }
  }
}
11
likes
0
points
1.1k
downloads

Publisher

verified publisherzego.im

Weekly Downloads

ZEGO ZIM Flutter SDK is a flutter plugin wrapper based on ZIM native Android / iOS / Mac / Win / Web SDK.

Homepage

License

(pending) (license)

Dependencies

flutter, flutter_web_plugins, js

More

Packages that depend on zego_zim

Packages that implement zego_zim