flutter与原生 相互通信实战
一、原生和flutter 通信
ios 通信类 CommonUtil.swift
import Foundation
import Flutterpublic class CommonUtil {public static func emitEvent(channel: FlutterMethodChannel, method: String, type: String, errCode: Int32?, errMsg: String?, data: Any?){safeMainAsync {var res: [String: Any] = [:]res["type"] = typeres["data"] = datares["errCode"] = errCoderes["errMsg"] = errMsgprint("native call flutter { method: \(method) type: \(type) }")channel.invokeMethod(method, arguments: res)}}
}
swift调用flutter 进行通信
CommonUtil.emitEvent(channel: channel, method: "conversationListener", type: "onConversationChanged", errCode: nil, errMsg: nil, data: conversationList)
安卓 通信类 CommonUtil.java
发送
_channel
.invokeMethod(
'initSDK',
_buildParam(
{
"platform": platform,
"api_addr": apiAddr,
"ws_addr": wsAddr,
"data_dir": dataDir,
"log_level": logLevel,
"object_storage": objectStorage,
"operationID": Utils.checkOperationID(operationID),
},
))
.then(
(value) => print("===================$value===================="));
package chat.konnect.konnect_im_sdk.util;import android.os.Handler;
import android.os.Looper;
import androidx.collection.ArrayMap;
import java.util.Map;
import io.flutter.Log;
import io.flutter.plugin.common.MethodChannel;
import chat.konnect.konnect_im_sdk.KonnectImSdkPlugin;public class CommonUtil {private final static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());public static void runMainThreadReturn(final MethodChannel.Result result, final Object param) {MAIN_HANDLER.post(() -> result.success(param));}public static void runMainThread(Runnable runnable) {MAIN_HANDLER.post(runnable);}public static void runMainThreadReturnError(final MethodChannel.Result result, final String errorCode, final String errorMessage, final Object errorDetails) {MAIN_HANDLER.post(() -> result.error(errorCode, errorMessage, errorDetails));}public static void runMainThreadReturnError(final MethodChannel.Result result, final long errorCode, final String errorMessage, final Object errorDetails) {runMainThreadReturnError(result, String.valueOf(errorCode), errorMessage, errorDetails);}public synchronized static <T> void emitEvent(String method, String type, Object errCode, String errMsg, T data) {runMainThread(() -> {Map<String, Object> res = new ArrayMap<>();if (null != type) {res.put("type", type);}if (null != data) {res.put("data", data);}if (null != errCode) {res.put("errCode", errCode);}if (null != errMsg) {res.put("errMsg", errMsg);}Log.i("IMSDK(native call flutter ===> emitEvent )", "{ method:" + method + ", type:" + type + " }");KonnectImSdkPlugin.channel.invokeMethod(method, res);});}public static <T> void emitEvent(String method, String type, T data) {emitEvent(method, type, null, null, data);}
}
java调用与flutter通信
CommonUtil.emitEvent("userListener", "onSelfInfoUpdated", s);
flutter 发送消息
static const _channel = MethodChannel('konnect_im_sdk');static final iMManager = IMManager(_channel);相关文章:
flutter与原生 相互通信实战
一、原生和flutter 通信 ios 通信类 CommonUtil.swift import Foundation import Flutterpublic class CommonUtil {public static func emitEvent(channel: FlutterMethodChannel, method: String, type: String, errCode: Int32?, errMsg: String?, data: Any?){safeMa…...
结构光相机原理
结构光相机原理...
ubuntu安装Anaconda
下载 Anaconda 进入 Ubuntu,自己新建下载路径,输入以下命令开始下载 注意,如果不是 x86_64,需要去镜像看对应的版本(https://mirrors.bfsu.edu.cn/anaconda/archive/?CM&OA) wget https://mirrors.…...
【RNA structures】RNA转录的重构和前沿测序技术
文章目录 RNA转录重建1 先简单介绍一下测序相关技术2 Map to Genome Methods2.1 Step1 Mapping reads to the genome2.2 Step2 Deal with spliced reads2.3 Step 3 Resolve individual transcripts and their expression levels 3 Align-de-novo approaches3.1 Step 1: Generat…...
4、Kafka 消费者
5.1 Kafka 消费方式 5.2 Kafka 消费者工作流程 5.2.1 消费者总体工作流程 5.2.2 消费者组原理 Consumer Group(CG):消费者组,由多个consumer组成。形成一个消费者组的条件,是所有消费者的groupid相同。 • 消费者组内…...
CSS3 渐变
CSS3 渐变可以让你在两个或多个指定的颜色之间显示平稳的过渡。 CSS3渐变有两种类型:线性渐变(Linear Gradients)和径向渐变(Radial Gradients)。 线性渐变(Linear Gradients): 线性…...
【Python 千题 —— 基础篇】分割有效信息
题目描述 题目描述 有时候我们需要截取字符串以获取有用的信息,比如对于字符串 “日期:2010-10-29”,我们需要截取后面的 10 个字符来获取日期,以便进行进一步分析。编写一个程序,输入一个字符串,然后输出…...
webrtc基于DTLS的端口复用技术
DTLS协议: DTLS(Datagram Transport Layer Security)数据包安全传输协议,用于在不可靠的数据包传输协议上(如UDP)提供数据的安全传输。 UDP多路复用: 一个UDP多路复用,被用来处理共享同一个UDP端口的多个并发的UDT连接。类似同一个tcp port上创建多个socket connec…...
【2024秋招】2023-9-20 度小满信贷系统平台部二面
1 面试官的部门介绍 我们部门是信贷系统平台部,主要是为度小满做一个服务,你应该也接触过信用卡,跟这种差不多,用户可以打进我们的系统申请一个额度,整个部门的规模大概是400-500人左右,我个人来自平台数据…...
【Django 04】Serialization 序列化的高级使用
序列化器 serializers 序列化器的作用 序列化将 queryset 和 instance 转换为 json/xml/yaml 返回给前端 反序列化与序列化则相反 定义序列化器 定义类,继承自 Serializer 通常新建一个 serializers.py 文件 撰写序列化内容 suah as 目前只支持 read_only 只…...
【前端学习】—变量类型和计算(五)
【前端学习】—变量类型和计算(五) 一、JS中使用typeof能得到哪些类型 字符串(String):表示文本数据,用单引号或双引号括起来。 数字(Number):表示数值数据,包括整数和浮点数。 布尔值(Boolean):表示真或假(true或false)的逻辑值。 空值(Null):表示一个空…...
QT中窗口自绘制效果展示
项目中需要使用QT进行窗口自绘,前期先做一下技术探索,参考相关资料代码熟悉流程。本着代码是最好的老师原则,在此记录一下。 目录 1.运行效果 2.代码结构 3.具体代码 1.运行效果 2.代码结构 3.具体代码 myspeed.pro QT core gui…...
Android Studio 直接获取Spinner的值
最近做一个小demo 使用Spinner下拉框来让用户选择地区、周数(第1-12周) 然后参考了一下别人的文章 这里引用这位博主博文: AndroidStudio使用spinner控件并添加监听(极简)_安卓spinner监听事件_天王老子来了我也不…...
渗透测试工具(3)Burpsuite
笔记目录 渗透测试工具(1)wireshark渗透测试工具(2)Nmap渗透测试工具(3)Burpsuite 1.简介 是Web应用程序测试,请求的拦截和修改,扫描web应用程序漏洞,以暴力破解登陆表单,执行会话令牌等多种的随机性检查。 (1)模块介绍 ①Intercept:用于显示和修改Ht…...
大数据之LibrA数据库系统上下电管理
系统上电 操作场景 系统管理员进行例行维护停机后需要重新启动服务器与FusionInsight LibrA集群。如果安装双机Manager,上电后HA将确定主备管理节点。系统启动完成后需要启动依赖集群运行的上层业务。 对系统的影响 系统上电完成以前集群不可用。 前提条件 获…...
Node.js、Vue的安装与使用(Linux OS)
Vue的安装与使用(Linux OS) Node.js的安装Vue的安装Vue的使用 操作系统:Ubuntu 20.04 LTS Node.js的安装 安装Node.js Node.js官方下载地址 1.选择合适的系统架构(可通过uname -m查看)版本安装 2.下载文件为tar.xz格…...
SparkSQL入门
概述 两种模式 Spark on Hive: 语法是Spark SQL语法,实际上是在IDEA上编写java叠加SQL的代码。 Hive on Spark: 只是替换了Hadoop的MR,改为了Spark的计算引擎。 发展历史 RDD > DataFrame > DataSet: 都有惰性机制,遇…...
AC修炼计划(AtCoder Regular Contest 167)
传送门:AtCoder Regular Contest 167 - AtCoder 再次感谢樱雪喵大佬的题解,讲的很详细,Orz。 大佬的博客链接如下:Atcoder Regular Contest 167 - 樱雪喵 - 博客园 (cnblogs.com) 第一题很签到,就省略掉了。 第二题…...
暄桐四阶课程「自在行草」学习装备指南
在2011年,暄桐成立的最初,课程便是面向零基础的成年人设计的。在十余年的教学实践中,暄桐教室为同学们提供了一种系统、有趣、扎实,并可持续进阶的学习可能。许多同学都是在来到暄桐以后,才第一次拿起毛笔,…...
vue3 列表页开发【选择展示列】功能
目录 背景描述: 开发流程: 详细开发流程: 总结: 背景描述: 这个功能是基于之前写的 封装列表页 的功能继续写的,加了一个选择展示列的功能,可以随时控制表格里展示那些列的数据…...
89张电力供应线路黑匣子目标检测数据集-包含完整原始图像与YOLO格式标注-适用于电力系统运维自动化与智能电网故障预警
电力供应线路黑匣子目标检测数据集分析 引言与背景 在电力系统运维与安全监测领域,黑匣子作为记录关键运行数据的重要设备,其准确识别与定位对于保障电力供应稳定性具有重要意义。本数据集专注于电力供应线路黑匣子的目标检测任务,提供了高…...
5 大渗透靶场全攻略:DVWA、Pikachu、SQLi-Labs 一站式教程
前言 因为最近有任务需要搭建一些适合新手使用的靶场,所以收集了一下互联网常见的一些友好的新手渗透测试靶场。 分别是DVWA、Pikachu、SQLi-Labs、Upload-Labs、XSS-Labs。 DVWA靶场 DVWA靶场是一个专门用于漏洞测试和练习的Web应用程序,旨在为安全…...
从ESMM到MMoE:当推荐系统多目标‘闹矛盾’时,Google的‘多门控专家’怎么当和事佬?
从ESMM到MMoE:多任务学习模型如何化解推荐系统的目标冲突 推荐系统发展到今天,早已不再是简单的点击率预测工具。当我们需要同时优化点击率、转化率、观看时长、互动率等多个指标时,单任务学习模型就显得力不从心了。这就像让一个厨师同时做川…...
《RocketMQ实战与进阶》08 结合实际场景顺序消费、消息过滤实战
顺序消费 业务场景描述 现在开发一个银行类项目,对用户的每一笔余额变更都需要发送短信通知到用户。如果用户同时在电商平台下单,转账两个渠道在同一时间进行了余额变更,此时用户收到的短信必须顺序的,例如先网上购物,…...
Alpha AI 量化 vs 传统量化深度对比测评
在数字经济的演进中,量化技术一直处于鄙视链的顶端。但随着 AI 大模型与 Web3 技术的爆发,传统的量化架构正面临前所未有的挑战。近期备受瞩目的Alpha AI平台,打出了“极简智能”的旗号。它究竟是对传统工具的简单升级,还是一次彻…...
Jellyfin元数据插件MetaShark终极指南:快速为你的媒体库添加中文电影信息
Jellyfin元数据插件MetaShark终极指南:快速为你的媒体库添加中文电影信息 【免费下载链接】jellyfin-plugin-metashark jellyfin电影元数据插件 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metashark 还在为Jellyfin媒体库中那些只有英文…...
3步快速配置:Microsoft Word APA第7版参考文献格式终极指南
3步快速配置:Microsoft Word APA第7版参考文献格式终极指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 你是否在为学术论文的参考文献格…...
告别手动造数!用SystemVerilog的$fscanf和$sscanf自动解析测试激励
告别手动造数!用SystemVerilog的$fscanf和$sscanf自动解析测试激励 在芯片验证的日常工作中,最枯燥的环节莫过于手动编写测试用例数据。想象一下这样的场景:你需要验证一个包含32个寄存器的模块,每个寄存器需要测试读写操作、边界…...
从调光到伽马校正:手把手教你用ILI9341命令优化TFT屏幕显示效果(实战避坑)
从调光到伽马校正:手把手教你用ILI9341命令优化TFT屏幕显示效果(实战避坑) 在嵌入式开发中,TFT屏幕的显示效果往往直接影响用户体验。许多开发者在使用ILI9341驱动芯片时,虽然能够完成基础显示功能,却常常忽…...
Docker沙箱配置实战手册(生产环境零事故配置模板)
第一章:Docker沙箱配置的核心价值与生产级定位Docker沙箱并非仅用于开发环境的临时隔离机制,而是现代云原生基础设施中保障服务可预测性、安全边界与部署一致性的关键执行层。在生产环境中,一个经过严谨配置的Docker沙箱,实质上构…...
