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

Flutter iOS 与 flutter 相互通信

在混合开发中避免不了通信,简单记录一下,Flutter iOS工程与Flutter 之间相互通信。
Flutter中通过Platform Channel实现Flutter和原生端的数据传递,是怎么进行数据通信,以及怎么配置,下面一一进行详解。

  • FlutterMethodChannel 使用
    注:iOS 端简单设置
class HYFlutterNavChannel: NSObject { public static let share = HYFlutterNavChannel()// 声明 FlutterMethodChannelvar channel: FlutterMethodChannel// lazy var map: [String: (_ call: FlutterMethodCall, _ result: FlutterResult) -> Void] = {return ["pop":pop,]}()override init() {// name 一定需要和  flutter里面约定好,保持一致channel = FlutterMethodChannel.init(name: "Flutter/navigation", binaryMessenger: FlutterBoost.instance().engine().binaryMessenger)super.init()channel.setMethodCallHandler {[weak self] (call, reslt) inlet method = self?.map[call.method]method?(call, reslt)}} public static func start() {_ = HYFlutterNavChannel.share}// popfunc pop(call: FlutterMethodCall, result: FlutterResult)  {UINavigationController.topNavigationController()?.navigationController?.popViewController(animated: true)}}

在iOS 注册Flutter 引擎的地方使用

// 案例是放到 AppDelegate中
[FlutterBoost.instance setup:application delegate:delegate callback:^(FlutterEngine *engine) {NSLog(@"FlutterBoost 开始操作");// 使用 MethodChannel[HYFlutterNavChannel start];[HYFlutterCommonChannel start];}];

上述就把iOS端,使用FlutterMethodChannel简单进行通信集成完毕。

  • Flutter 端 MethodChannel 集成与使用
import 'dart:collection';import 'package:flutter/services.dart';class NavigationChannel {// 这里需要和原生保存一致  "Flutter/navigation"// ignore: constant_identifier_namesstatic const MethodChannel channel_navigation =MethodChannel("Flutter/navigation");// ignore: non_constant_identifier_namesstatic final channel_navigation_handlers =HashMap<String, MethodCallHandler>();NavigationChannel() {init();}void init() {channel_navigation_handlers["nativeQuitFlutter"] = nativeQuitFlutter;channel_navigation.setMethodCallHandler((call) async {channel_navigation_handlers[call.method]?.call(call);});}//  native 提供的功能方法Future<void> finishHostPage() async {return channel_navigation.invokeMethod("pop");}Future<void> nativeQuitFlutter(MethodCall call) async {}// -------------flutter提供的功能-----------------void registerInitRoute(MethodCallHandler handler) {channel_navigation_handlers["initRoute"] = handler;}
}typedef MethodCallHandler = Future<dynamic> Function(MethodCall call)?;

以上 Flutter MethodChannel 集成完毕

  • Flutter 使用MethodChannel
    这里使用了一个类进行统一管理 通信类
import 'package:my_flutter/common_channel.dart';import 'navigation_channel.dart';class Channels {// ignore: empty_constructor_bodiesChannels._() {}// 注册 Channelstatic final navigation = NavigationChannel();static final common = CommonChannel();
}

在Flutter使用的地方进行调用

Channels.navigation.finishHostPage();

上述完成,flutter就可以调用原生里面注册的pop方法了。

相关文章:

Flutter iOS 与 flutter 相互通信

在混合开发中避免不了通信&#xff0c;简单记录一下&#xff0c;Flutter iOS工程与Flutter 之间相互通信。 Flutter中通过Platform Channel实现Flutter和原生端的数据传递&#xff0c;是怎么进行数据通信&#xff0c;以及怎么配置&#xff0c;下面一一进行详解。 FlutterMetho…...

OpenCV和PIL图像对象转换

OpenCV和PIL&#xff08;Python Imaging Library&#xff09;都是常用的Python图像处理库。它们都有自己的图像对象类型&#xff0c;因此在使用它们时需要进行相应的转换。 下面是OpenCV图像对象和PIL图像对象之间的转换方法&#xff1a; 将OpenCV图像对象转换为PIL图像对象&…...

IDEA的实用快捷键大全

目录 1.常规快捷键 1.1通用类 1.2注释类 1.3操作类 1.4展开与关闭 2.智能补全类快捷键 3.程序结构类快捷键 4.统一操作快捷键 1.常规快捷键 1.1通用类 像 Ctrl C 复制&#xff0c; Ctrl V 粘贴&#xff0c; Ctrl S保存文件&#xff0c; Ctrl X剪切&#xff0c;这种…...

04-6_Qt 5.9 C++开发指南_QListWidget和QToolButton

文章目录 1. 实例简介2. 源码2.1 混合式界面设计2.2 mainwindow.h2.3 mainwindow.cpp 1. 实例简介 Qt 中用于项 (Item)处理的组件有两类&#xff0c;一类是 Item Views&#xff0c;包括 QListView、QTreeView、QTableView、QColumnView 等;另一类是 Item Widgets&#xff0c;包…...

笔试错题不熟悉 积累

【2022】小米秋招笔试-运维开发-卷2 DNS 域名解析的默认端口是 53 常用服务端口号集合&#xff08;超全&#xff09;&#xff01;&#xff01;&#xff01; Redis中遍历所有Key&#xff0c;以下哪种方式对Redis服务影响最小? SCAN 每次执行都只会返回少量元素&#xff0c;…...

Adb发送特定广播给App和App获取权限的命令

最近在做Autostart&#xff0c;但是没有bench R1环境 目前在模拟器上调试&#xff0c;需要调试自定义的广播和获取悬浮窗权限&#xff08;因为这个app需要在开机未启动app的情况启动服务区获取传感器信号然后全局弹窗&#xff09;。 需要先adb root adb remount 1.发送广播给…...

字节C++后端面试总结

字节的面经,技术栈是 C++ 后端。 计算机网络 UDP和TCP区别 先说了概念一个是面向连接的基于字节流的可靠连接,一个是不需要连接的基于数据报的不可靠传输 然后说了几个小点,比如首部长度、应用场景、服务对象什么的。 补充: 还有一个很重要的点:UDP 的实时性比 TCP 好…...

el-select 分页加载

el-select 分页加载 el-select 分页懒加载监听的指令——loadMore指令的使用 el-select 分页懒加载 针对数据量大的选择器&#xff0c;需要分页从后端接口获取数据&#xff0c;前端监听选择器下拉框的滚动事件&#xff0c;当往下滚动至底部一定位置时&#xff0c;调接口 监听…...

QColorDialog

QColorDialog 颜色类 QColor颜色对话框API简单的使用 QColorDialog类是QDialog的子类, 通过这个类我们可以得到一个选择颜色的对话框窗口 颜色类 QColor 关于颜色的属性信息, 在QT框架中被封装到了一个叫QColor的类中。 各种颜色都是基于红, 绿, 蓝这三种颜色调配而成的, 并…...

Linux部署Zabbix主机监控

192.168.136.55 服务端 192.168.136.56 客户端 一、服务端 1.1 安装lamp环境 #关闭防火墙以及SELINUX systemctl disable firewalld systemctl stop firewalld sed -i s/SELINUXenforcing$/SELINUXdisabled/g /etc/selinux/config setenforce 0设置yum源 yum install epe…...

【IC萌新虚拟项目】功能覆盖率文件合入与功能覆盖率收集

关于整个虚拟项目,请参考: 【IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 上一篇文章我们已经完成了测试点的相关指导,在工程目录下看到一份推荐的测试点分解文档。当然这只是一种参考,大家可以按照自己的理解进行测试点分解,并…...

同步辐射散射数据处理分析方法及实验过程

同步辐射散射数据处理分析方法及过程 同步辐射散射测试是一种先进的材料表征技术&#xff0c;已广泛应用于材料科学、生物学、化学等领域。同步辐射散射技术利用同步辐射光源产生的高亮度辐射&#xff0c;通过散射实验来研究样品的结构、形态和动态行为。 同步辐射散射处理分析…...

使用JavaScript开发网页地图导航

使用JavaScript开发网页地图导航 导航是生活中的一个常见需求&#xff0c;而在互联网时代&#xff0c;网页地图导航成为了人们获取信息和帮助的重要工具。在网页中开发一个地图导航功能&#xff0c;能够提供用户位置定位、路线规划、交通情况等有用的信息&#xff0c;提供便利…...

Go中的匿名函数与闭包

关键词: 函数式编程 闭包 匿名函数 匿名函数特别适合作为函数或方法的回调 在Go中函数是一等公民&#xff0c;和string&#xff0c;int等一样。 而在C、C 等不支持匿名函数的语言中&#xff0c;函数不能在运行期创建 go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包 闭包 与…...

中文分词工具jieba的使用

1.jieba简介 在自然语言处理任务时中文文本需要通过分词获得单个的词语,这个时候就需要用到中文分词工具jieba jieba分词是一个开源项目,地址为github.com/fxsjy/jieba 它在分词准确度和速度方面均表现不错。 2.jieba的安装 全自动安装pip install jieba / pip3 install …...

CTF Stegano练习之隐写初探

今天要介绍的是CTF练习中的Stegano隐写题型 。做隐写题的时候&#xff0c;工具是很重要的&#xff0c;接下来介绍一些工具。 1、TrID TrID是一款根据文件二进制数据特征进行判断的文件类型识别工具。虽然也有类似的文件类型识别工具&#xff0c;但是大多数都是使用硬编码的识…...

大数据课程H2——TELECOM的电信流量项目实现

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解TELECOM项目的数据收集; ⚪ 了解TELECOM项目的数据清洗; ⚪ 了解TELECOM项目的数据导出; ⚪ 了解TELECOM项目的数据可视化; ⚪ 了解TELECOM项目的其他; 一、数据收集 1. 在实…...

Langchain module ‘hnswlib‘ has no attribute ‘Index‘ 错误解决

Langchain module hnswlib has no attribute Index 错误解决 使用 Langchain 操作 Chroma 向量数据库时&#xff0c;报一下错误信息&#xff0c; module hnswlib has no attribute Index试着重装了不同 hnswlib 版本没有解决&#xff0c;最后解决方法是&#xff0c;不要使用 h…...

HIVE学习

1.什么是HIVE 1.HIVE是什么? Hive是由Facebook开源&#xff0c;基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并提供类SQL查询功能。 大白话: HIVE就是一个类似于Navicat的可视化客户端, 2.HIVE本质 Hive是一个Hadoop客户端&a…...

逆了个天了,阿里开源自然语言写SQL的神器级别工具快用起来

Chat2DB 是一款有开源免费的多数据库客户端工具&#xff0c;支持windows、mac本地安装&#xff0c;也支持服务器端部署&#xff0c;web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力&#xff0c;能够将自然语言转换为SQL&#xff0c;也可以…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...