flutter多窗口方案

flutter 多窗口方案

Flutter 官方目前对桌面多窗口的支持还不够完善,通过结合 desktop_multi_window 和 window_manager 插件实现多窗口

  • window_manager 在子窗口中拿不到实例,考虑实际应用中子窗口多为桌面小工具,对窗口管理的要求比较简单,因此只在主窗口使用
  • 在主窗口运行时,同时使用 desktop_multi_window 创建子窗口,维护单例 controller,设置窗口基本属性
  • 由于 controller 是在主窗口创建的,子窗口中同样也拿不到实例,通过窗口间通信发送命令到主窗口来调用 controller 上的方法
  • 主/子窗口联动例如:路由跳转、发送消息都可以通过窗口间通信完成。注意:需要确保数据一致性
  • 考虑到子窗口一旦创建,状态例如:是否登录就保持不变,需要在恰当的时机销毁并重新初始化
  • 注意:子窗口有用到例如:ScreenUtilInit、FlutterSmartDialog 等插件同样需要先初始化
  • 完整的解决方案Flutter 桌面多窗口支持