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

Flutter 拦截系统键盘,显示自定义键盘

一、这里记录下在开发过程中,下单的时候输入金额需要使用自定义的数字键盘

  • 参考链接: https://juejin.cn/post/7166046328609308685
效果图

二、屏蔽系统键盘

怎样才能够在输入框获取焦点的时候,不让系统键盘弹出呢?同时又显示我们自定义的键盘呢?

  • 这里就需要自定义BinaryMessenger了 ,在这里拦截发送给系统显示键盘的消息这样就达到了不显示系统键盘的目的了
class TextInputBinaryMessenger extends BinaryMessenger {final BinaryMessenger origin;TextInputBinaryMessenger(this.origin);Future<void> handlePlatformMessage(String channel,ByteData? data,PlatformMessageResponseCallback? callback,) {return origin.handlePlatformMessage(channel, data, callback);}Future<ByteData?>? send(String channel, ByteData? message) async {///拦截系统键盘if (channel == SystemChannels.textInput.name) {final codec = SystemChannels.textInput.codec;final methodCall = codec.decodeMethodCall(message);if (methodCall.method == 'TextInput.show') {final FocusNode? focusNode = FocusManager.instance.primaryFocus;///使用了这个[CustomKeyboardFocusNode] 统一不显示系统键盘if (focusNode is CustomKeyboardFocusNode) {return codec.encodeSuccessEnvelope(null);}}}return origin.send(channel, message);}void setMessageHandler(String channel, MessageHandler? handler) {origin.setMessageHandler(channel, handler);}
}
  • 这里有个小技巧,通过自定义一个FocusNode 这样在需要显示键盘的时候可以很轻松的判断当前需不需要显示系统的键盘。
  • 那现在就要做第二步了显示自己的键盘:也很简单只需要监听输入框的焦点的变化来显示和隐藏键盘即可。

三、最后怎么使用上面自定义好的TextInputBinaryMessenger呢?

  • 如下代码:
class CustomWidgetsFlutterBinding extends WidgetsFlutterBindingwith TextInputBindingMixin {///初始化static WidgetsBinding? ensureInitialized() {CustomWidgetsFlutterBinding();return WidgetsBinding.instance;}
}mixin TextInputBindingMixin on ServicesBinding {BinaryMessenger createBinaryMessenger() {return TextInputBinaryMessenger(super.createBinaryMessenger());}
}
  • 最后只需要在程序入口初始化即可:
 void main() {CustomWidgetsFlutterBinding.ensureInitialized();runApp();
}

相关文章:

Flutter 拦截系统键盘,显示自定义键盘

一、这里记录下在开发过程中&#xff0c;下单的时候输入金额需要使用自定义的数字键盘 参考链接: https://juejin.cn/post/7166046328609308685 效果图 二、屏蔽系统键盘 怎样才能够在输入框获取焦点的时候&#xff0c;不让系统键盘弹出呢&#xff1f;同时又显示我们自定义的…...

内存泄漏是什么?如何避免内存泄漏?

1.2 内存泄漏 使用new开辟空间泄漏&#xff0c;抛出异常 int main() {int size 0;try{while (1){//int* p (int*)malloc(sizeof(int) * 1024 * 1024);/*if (p NULL){break;}*/int* p new int[1024 * 1024];size size 4 * 1024 * 1024;cout << p << endl;}}…...

linux 中的syslog的含义和用法

在Linux系统中&#xff0c;syslog是一种系统日志服务&#xff0c;用于收集、存储和管理系统和应用程序生成的日志消息。syslog服务负责记录系统的运行状态、错误信息、警告、调试信息等&#xff0c;以便系统管理员可以监控系统的健康状况、故障排查和性能优化。 含义和作用&am…...

kubernetes(K8S)学习(一):K8S集群搭建(1 master 2 worker)

K8S集群搭建&#xff08;1 master 2 worker&#xff09; 一、环境资源准备1.1、版本统一1.2、k8s环境系统要求1.3、准备三台Centos7虚拟机 二、集群搭建2.1、更新yum&#xff0c;并安装依赖包2.2、安装Docker2.3、设置hostname&#xff0c;修改hosts文件2.4、设置k8s的系统要求…...

巧克力(蓝桥杯)

文章目录 巧克力题目描述解题分析贪心 巧克力 题目描述 小蓝很喜欢吃巧克力&#xff0c;他每天都要吃一块巧克力。 一天小蓝到超市想买一些巧克力。超市的货架上有很多种巧克力&#xff0c;每种巧克力有自己的价格、数量和剩余的保质期天数&#xff0c;小蓝只吃没过保质期的…...

Python爬虫之pyquery和parsel的使用

三、pyquery的使用 1、准备工作 pip3 install pyquery2、初始化 2.1、字符串初始化 把HTML的内容当做参数&#xff0c;来初始化PyQuery对象。 html <div><ul><li class"item-0">first item</li><li class"item-1">&l…...

移动硬盘怎么加密?移动硬盘加密软件有哪些?

移动硬盘是我们在工作中最常用的移动存储设备&#xff0c;为了保护数据安全&#xff0c;需要使用专业的移动硬盘加密软件加密保护。那么&#xff0c;移动硬盘加密软件有哪些&#xff1f; ​BitLocker BitLocker是Windows的磁盘加锁功能&#xff0c;可以用于加密保护移动硬盘中…...

openEuler 22.03 安装 .NET 8.0

openEuler 22.03 安装 .NET 8.0 openEuler 22.03 安装 .NET 8.0 openEuler 22.03 安装 .NET 8.0 查看内核信息 [jeffPC-20240314EIAA ~]$ cat /proc/version Linux version 5.15.146.1-microsoft-standard-WSL2 (root65c757a075e2) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils)…...

【转载】OpenCV ECC图像对齐实现与代码演示(Python / C++源码)

发现一个有很多实践代码的git 库,特记录下: 地址:GitHub - luohenyueji/OpenCV-Practical-Exercise: OpenCV practical exercise 作者博客地址:https://blog.csdn.net/LuohenYJ 已关注。 Items项目Resources1age_gender1基于深度学习识别人脸性别和年龄Model2OpenCV_dlib_…...

每日一题(相交链表 )

欢迎大家来我们主页进行指导 LaNzikinh-CSDN博客 160. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节…...

C#WPF控件大全

本文列出WPF控件大全,点击可以进入详情页查看。 列表如下: AccessText用下划线来指定用作访问键的字符。 ActivatingKeyTipEventArgs为 ActivatingKeyTip 事件提供数据。...

好书推荐 《AIGC重塑金融》

作者&#xff1a;林建明 来源&#xff1a;IT 阅读排行榜 本文摘编自《AIGC 重塑金融&#xff1a;AI 大模型驱动的金融变革与实践》&#xff0c;机械工业出版社出版 这是最好的时代&#xff0c;也是最坏的时代。尽管大模型技术在金融领域具有巨大的应用潜力&#xff0c;但其应…...

【Linux】权限理解

权限理解 1. shell命令以及运行原理2. Linux权限的概念3. Linux权限管理3.1 文件访问者的分类&#xff08;人&#xff09;3.2 文件类型和访问权限&#xff08;事物属性&#xff09;3.2.1 文件类型3.2.2 基本权限 3.3 文件权限值的表示方法3.4 文件访问权限的相关设置方法3.4.1 …...

插入排序、归并排序、堆排序和快速排序的稳定性分析

插入排序、归并排序、堆排序和快速排序的稳定性分析 一、插入排序的稳定性二、归并排序的稳定性三、堆排序的稳定性四、快速排序的稳定性总结 在计算机科学中&#xff0c;排序是将一组数据按照特定顺序进行排列的过程。排序算法的效率和稳定性是评价其优劣的两个重要指标。稳定…...

【pytest、playwright】多账号同时操作

目录 方案实现思路&#xff1a; 方案一&#xff1a; 方案二&#xff1a; 方案实现思路&#xff1a; 依照上图所见&#xff0c;就知道&#xff0c;一个账号是pytest-playwright默认的环境&#xff0c;一个是 账号登录的环境 方案一&#xff1a; 直接上代码&#xff1a; imp…...

软考 系统架构设计师系列知识点之云原生架构设计理论与实践(8)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之云原生架构设计理论与实践&#xff08;7&#xff09; 所属章节&#xff1a; 第14章. 云原生架构设计理论与实践 第2节 云原生架构内涵 14.2 云原生架构内涵 关于云原生的定义有众多版本&#xff0c;对于云原生架构的…...

【C++】stack、queue和优先级队列

一、前言 二、stack类 2.1 了解stack 2.2 使用stack &#xff08;1&#xff09;empty &#xff08;2&#xff09;size &#xff08;3&#xff09;top &#xff08;4&#xff09;push &#xff08;5&#xff09;pop 2.3 stack的模拟实现 三、queue类 3.1 了解queue …...

第十三届蓝桥杯国赛真题 Java C 组【原卷】

文章目录 发现宝藏试题 A: 斐波那契与 7试题 B: 小蓝做实验试题 C: 取模试题 D: 内存空间试题 E \mathrm{E} E : 斐波那契数组试题 F: 最大公约数试题 G: 交通信号试题 I: 打折试题 J: 宝石收集 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#x…...

docker部署ubuntu

仓库&#xff1a; https://hub.docker.com/search?qUbuntu 拉一个Ubuntu镜像 docker pull ubuntu:18.04 查看本地镜像&#xff1a; docker images 运行容器 docker run -itd --name ubuntu-18-001 ubuntu:18.04 通过ps命令可以查看正在运行的容器信息 docker ps 进入容器 最…...

iOS问题记录 - App Store审核新政策:隐私清单 SDK签名(持续更新)

文章目录 前言开发环境问题描述问题分析1. 隐私清单 & SDK签名1.1. 隐私清单 - 数据使用声明1.2. 隐私清单 - 所用API原因描述1.3. SDK签名 2. 即将发布的第三方SDK要求 解决方案最后 前言 前段时间用Flutter开发的iOS App提交了新版本&#xff0c;结果刚过两分钟就收到了…...

Vivado GUI隐藏技巧:如何手动修改OOC模式IP的时钟频率(附200MHz实战案例)

Vivado GUI隐藏技巧&#xff1a;如何手动修改OOC模式IP的时钟频率&#xff08;附200MHz实战案例&#xff09; 在FPGA开发中&#xff0c;Vivado的IP核(IP Catalog)功能极大提升了设计效率&#xff0c;但OOC(Out-of-Context)模式下IP核的时钟频率设置却常常让初学者困惑。当你在G…...

零基础玩转OpenClaw:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF镜像快速入门

零基础玩转OpenClaw&#xff1a;Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF镜像快速入门 1. 为什么选择云端镜像快速体验OpenClaw 第一次听说OpenClaw时&#xff0c;我就被它的自动化能力吸引了——能让AI像人类一样操作我的电脑完成各种任务。但当我看到本地安装…...

5步掌握Blender置换贴图:从基础到高级的完整指南

5步掌握Blender置换贴图&#xff1a;从基础到高级的完整指南 【免费下载链接】awesome-blender &#x1fa90; A curated list of awesome Blender addons, tools, tutorials; and 3D resources for everyone. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-ble…...

禅修Debug大法:面对屎山先冥想三小时

——测试工程师的认知重构与系统破局指南第一章 祖传系统的测试困局&#xff1a;当屎山遇见测试用例1.1 屎山系统的四大典型特征熵增陷阱15年以上的迭代系统普遍呈现指数级增长的代码复杂度。行业数据显示&#xff0c;超过60%的祖传系统每月新增代码的耦合度递增12%&#xff0c…...

ClawHub 抖音 Skills 完整盘点:36 个 Skills 分类与选型指南

ClawHub/OpenClaw 平台上共有 36 个专门针对抖音&#xff08;Douyin&#xff09;的 Skills&#xff0c;覆盖热榜监控、视频下载、自动发布、转录分析、内容创作、合规检测等完整工作链。本文从技术实现角度做完整整理&#xff0c;含安装命令和实现细节说明。 数据截至 2026 年…...

COMSOL中BIC多极解分(多极展开)复现:周期性结构通用解法探索

COMSOL中BIC的多极解分&#xff08;多极展开&#xff09;复现&#xff1a; 周期性结构通用&#xff0c;公式内嵌的comsol中&#xff0c;直接不需要matlab即可得到对应极子和三个方向的散射截面。 下图是以四聚体周期性结构为例&#xff0c;仿真复现结果和文献相吻合。 内含透射…...

OpenWrt 固件扩容官方指南

[OpenWrt Wiki] Expanding root partition and filesystem OpenWrt针对固件扩容有官方指南&#xff0c;但目前很多网络教程仍然停留在老版本&#xff0c;特此记录。 特点&#xff1a; 1、支持 ext4 和 squashfs 固件格式 2、自动识别根分区和文件系统。 3、利用空闲空间扩…...

lychee-rerank-mm与PyTorch集成:构建自定义多模态模型

lychee-rerank-mm与PyTorch集成&#xff1a;构建自定义多模态模型 1. 引言 多模态AI正在改变我们处理信息的方式&#xff0c;但如何让模型真正理解图文之间的复杂关系&#xff0c;一直是个技术难点。想象一下这样的场景&#xff1a;你的电商平台需要将用户上传的商品图片与海…...

AI替代saas是否是必然的趋势?

最近各社区中反复在出现&#xff0c;也有不少行业专家在讨论&#xff0c;尤其在2025-2026年的分享中。核心意思大概是&#xff1a;AI已经把“从0到1做出可运行产品”的技术门槛大幅拉低&#xff0c;甚至用老旧的GPT-3.5级别模型&#xff08;或类似能力&#xff09;就能快速完成…...

计算机毕业设计springboot月知晓彩妆销售系统 SpringBoot美妆臻选在线商城系统 基于SpringBoot的“妆点人生“化妆品零售平台

计算机毕业设计springboot月知晓彩妆销售系统bq58y9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在颜值经济蓬勃发展的当下&#xff0c;化妆品电商市场持续高速增长。传统线下…...