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