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

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/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:zego_zim_example/topics/login/user_model.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' hide MenuItem;
import 'package:tray_manager/tray_manager.dart';
import 'package:zego_zim_example/app_wrapper.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  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,
        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
55
points
2.16k
downloads

Documentation

API reference

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

MIT (license)

Dependencies

flutter, flutter_web_plugins, js

More

Packages that depend on zego_zim

Packages that implement zego_zim