当前位置: 首页 > news >正文

【Nativeshell】flutter的pc跨平台框架学习记录<二> 窗口间通信

首先是初始化:

查看Nativeshell的demo代码

// ignore_for_file: undefined_hidden_name, // not in main
import 'package:flutter/material.dart' hide MenuItem;
import 'package:nativeshell/nativeshell.dart';import 'pages/other_window.dart';
import 'pages/platform_channels.dart';
import 'main_window.dart';
import 'pages/modal_window.dart';
import 'widgets/veil.dart';void main() async {// Disable shader warmup - it delays producing first frame, which we want to// produce as soon as possible to reduce time to open new windows.disableShaderWarmUp();runApp(Main());
}// Common scaffold code used by each window
class ExamplesWindow extends StatelessWidget {const ExamplesWindow({Key? key, required this.child}) : super(key: key);final Widget child;@overrideWidget build(BuildContext context) {return MaterialApp(home: DefaultTextStyle(style: TextStyle(color: Colors.white,fontSize: 14,),child: WindowLayoutProbe(child: child),),);}
}class Main extends StatelessWidget {@overrideWidget build(BuildContext context) {return Veil(child: Container(color: Color.fromARGB(255, 30, 30, 35),child: WindowWidget(onCreateState: (initData) {WindowState? state;state ??= PlatformChannelsWindowState.fromInitData(initData);state ??= ModalWindowState.fromInitData(initData);state ??= OtherWindowState.fromInitData(initData);state ??= MainWindowState();return state;},),),);}
}

这里要注意 ??= 表示 state如果为null则赋值后面的值,否则返回state的自己的值

子窗口:

PlatformChannelsWindowState.fromInitData(initData);
ModalWindowState.fromInitData(initData);
OtherWindowState.fromInitData(initData);

主窗口:
MainWindowState();

其中initData为创建子窗口时传递过来的参数

initData['class'] 这个字段用于标识应该启动哪个子窗口

通过子窗口主动调用子窗口中的方法,并传参

await otherWindow?.callMethod('showMessage', 'Hello from parent window!');

通过父窗口调用父窗口中的方法,并传参

await Window.of(context).parentWindow?.callMethod('showMessage', 'Hello');

http://www.lryc.cn/news/494167.html

相关文章:

  • 今日codeforces刷题(1)
  • 【C++算法】20.二分查找算法_x 的平方根
  • 图像显示的是矩阵的行和列,修改为坐标范围。
  • 通义灵码走进北京大学创新课堂丨阿里云云原生 10 月产品月报
  • LeetCode Hot100 1~10
  • npm 最新国内淘宝镜像地址源 (旧版已不能用)
  • DepthAI 2.29版本 发布
  • C#反序列化XML时提示XML 文档(1, 1)中有错误
  • C# 中的接口:定义行为契约与实现多态性
  • Redis的基础知识·
  • qt QProxyStyle详解
  • AWS CLI 操作指南
  • 海盗王用golang重写的AccountServer功能
  • 如何保证spring boot应用程序的安全性?
  • 力扣 岛屿数量-200
  • 极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【三】
  • 十二、正则表达式、元字符、替换修饰符、手势和对话框插件、字符串截取
  • 【信息系统项目管理师】第3章:信息系统治理 考点梳理
  • 实现对图片或者视频增加隐藏水印和提取水印
  • uniapp配置全局消息提醒
  • 卸载snap docker一直卡住:Save data of snap “docker“ in automatic snapshot set #3
  • python学习——字典元素的访问和遍历
  • 数据结构基础之《(9)—归并排序》
  • 【深度学习】各种卷积—卷积、反卷积、空洞卷积、可分离卷积、分组卷积
  • 远程视频验证如何改变商业安全
  • 电脑启动需要经历哪些过程?
  • 纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
  • postman使用正则表达式提取数据实战篇!
  • ipmitool使用详解(三)-解决各种dell、hp服务器无法ipmitool连接问题
  • AWS EC2设置用户名密码登录