Flutter依赖于传递消息的方式使用特定平台的API:

1.应用程序Flutter通过平台通道向宿主发送消息

2.宿主监听平台通道并接受消息,之后可以使用平台API,并将响应发送回客户端。

注 :消息和响应以异步形式进行传递,以确保用户界面保持响应

Flutter定义了三种Channel

BasicMessageChannel:用于传递字符串和半结构化的信息

MethodChannel:用于传递方法调用

EventChannel:用于数据流的通信

这里介绍通过MethodChannel通信的示例:

Flutter端

class _MyHomePageState extends State<MyHomePage> {final testChannel = const MethodChannel("name"); //name为通道名要保证两端通道名称相等Future<void> test() async {return await testChannel.invokeMethod("popMessage");//invokeMthod调用方法可以添加参数}@overrideWidget build(BuildContext context) {return Scaffold(body: Center(child: RaisedButton(child: Text("test"),onPressed: () {test();  //点击按钮调用windows平台方法},),),);}
}

windows平台(vs)

在vs中打开build文件夹下.sln文件,在flutter_windows.cpp文件中添加以下代码

void configMethodChannel(flutter::FlutterEngine* engine){std::string testChannel = "name"; //保持两端通道名称相等const flutter::StandardMethodCodec& codec = flutter::StandardMethodCodec::GetInstance();flutter::MethodChannel method_channel_(engine->messenger(), testChannel, &codec);method_channel_.SetMethodCallHandler([](const auto& call, auto result) {  //消息处理器if (call.method_name().compare("popMessage") == 0) {test();  //调用popMessage方法时执行的函数result->Success();  //可将函数返回值通过参数返回给Flutter端 }else {std::cout << "fail" << std::endl;}});
}
添加之后在onCreate方法中调用上述方法
bool FlutterWindow::OnCreate() {if (!Win32Window::OnCreate()) {return false;}RECT frame = GetClientArea();flutter_controller_ = std::make_unique<flutter::FlutterViewController>(frame.right - frame.left, frame.bottom - frame.top, project_);if (!flutter_controller_->engine() || !flutter_controller_->view()) {return false;}RegisterPlugins(flutter_controller_->engine());run_loop_->RegisterFlutterInstance(flutter_controller_->engine());SetChildContent(flutter_controller_->view()->GetNativeWindow());configMethodChannel(flutter_controller_->engine());  //调用添加的方法return true;
}
方法名对应执行的操作
void test() {MessageBox(NULL, TEXT("这是测试对话框"), TEXT("你好"), MB_ICONINFORMATION | MB_YESNO);
}

Flutter 与win32 交互相关推荐

  1. flutter和原生交互

    一.Flutter中使用Android Studio打开原生文件 选中Android目录--右键--选中flutter---Open for Editing in Android Studio 问题1 ...

  2. 阿衰java免费版_flutter plugin之路:flutter与原生交互传值OC/java版(一)

    说在前头:flutter虽然很牛掰,但是目前很多功能或者插件的实现其实还是需要通过原生来实现,然后通过flutter和原生的交互传值实现数据的交换. -本篇是flutter调用原生方法,然后原生执行完 ...

  3. 包红b2c模块 flutter与原生交互

    一.flutter提供的FlutterMethodChanel与原生(ios&android)进行交换 flutter与原生交互图: ios注册flutter调用通道 //oc 注册flutt ...

  4. Android 集成 Flutter 及通信交互详解

    欢迎大家关注[跨平台开发那些事]公众号,定期推送跨平台开发技术实践. 前不久开源了用Flutter开发的一个音视频类App客户端,欢迎大家star, fork. ⚠️ 项目地址:https://git ...

  5. Flutter开发之——交互组件-Slider

    一 概述 本文介绍Flutter中的滑块组件 Slider:只有一个滑块,获取滑动后位置的值 RangeSlider:有两个滑块,左右滑动后,获取区间的值 CupertinoSlider:仿IOS风格 ...

  6. Flutter 与 原生交互(Android),安卓移动开发背景换色

    */ public static String CHANNEL = "com.mmd.flutterapp/plugin"; private static String ACTIO ...

  7. Flutter 与 原生交互(Android),关于Android开发的面试经验总结

    接收 */ void receiveMessage(){ messageChannel.setMessageHandler((message) async{ print(message); retur ...

  8. 第一章 常见跨平台解决方案及Flutter架构

    近些年来,不断的有前端跨平台方案涌现出来,比如基于WebView的Cordova,还有渲染成原生控件的Reactive.Weex等,那么,这些跨平台方案有什么通用的实现思路呢,而Flutter的设计思 ...

  9. Flutter学习指南:文件、存储和网络

    Flutter学习指南 交互.手势和动画 UI布局和控件 熟悉Dart语言 编写第一个应用 开发环境搭建 本篇文章我们先学习 Flutter IO 相关的基础知识,然后在 Flutter学习指南:交互 ...

最新文章

  1. 关联规则概念、啤酒加尿布引出购物篮分析、频繁项集、支持度+置信度+提升度
  2. 虚幻UE4常见问题最全集合
  3. 076_浏览器对象模型
  4. 【IT资讯】TIOBE - 2020年8月编程语言排行
  5. java设计模式之责任链模式以及在java中作用
  6. 虚拟机linux挂载光盘显示:mount: you must specify the filesystem type
  7. 【bzoj2060】[Usaco2010 Nov]Visiting Cows拜访奶牛 树形dp
  8. Grub2中文指南4---开机影像和主题
  9. Spring学习总结(20)——Spring加载多个项目properties配置文件问题解决
  10. python函数定义及调用-python 中函数的定义以及调用先后顺序问题
  11. Runtime之方法
  12. the third assignment of software testing
  13. 9. Javascript 表达式
  14. BZOJ3998: [TJOI2015]弦论【SAM】
  15. 一、从0开始——黑客学习路线
  16. 学计算机的学数学建模课吗,为什么数学建模与数学实验会进入大学课堂
  17. echarts制作迁徙图
  18. 游戏加速外挂的原理是什么 ?
  19. Windows下Python的安装与配置
  20. 网易 产品策划( 杭州研究员) 笔试题解

热门文章

  1. 单点登录服务Authelia(下篇)
  2. java 如何遍历所有子目录、子文件
  3. Android图表库MPAndroidChart(四)——条形图的绘制过程过程,隐隐约约我看到了套路...
  4. 装机软件七:视频播放软件
  5. 2014中兴笔试试题
  6. 摩伴windows桌面服务器,魔伴Windows桌面app
  7. 百度云大文件网页直接下载
  8. 赛门铁克推Android手机诺顿安全应用
  9. GMSSL :SM2椭圆曲线公钥密码算法——数字签名算法1
  10. 幸福就是把爱留给爱你的人