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

Flutter PopScope对于iOS设置canPop为false无效问题

        这个问题应该出现很久了,之前的组件WillPopScope用的好好的,flutter做优化打算“软性”处理禁用返回手势,出了PopScope,这个组件也能处理在安卓设备上的左滑返回事件。但是iOS上面左滑返回手势禁用,一直无效。

当然之前一直在使用Navigator动态路由的方式的话是不影响的。

Navigator.push(context,MaterialPageRoute(builder: (context) =>FullScreenImagePage(images: [imagePath]),),);

        但是对于静态路由和一些其他三方的路由(fluro,go_route,getx(这个在版本4.7.2中已修复))封装组件就会有影响。

那我们看下具体为什么会出现这种问题?

        首先我们看PopScope的内部实现是接口实现了PopEntry的一个ValueNotifier  canPopNotifier来控制内部的返回手势是否可用。

ModelRoute注册该事件,然后在这个抽象类中有统一的返回手势判断竞技场逻辑:

到此暂告一段落。

        上面我们说Navigator的动态路由方式没问题,那么就看下他的处理和其他的路由方式的差别:MaterialPageRoute的混入MaterialRouteTransitionMixin如下:

CupertinoPageRoute的混入CupertinoRouteTransitionMixin如下(我只截取了最有介绍的部分,想看的可以自己去文件里面看,路径我已经截出来了):

                

        Flutter最近也一直在优化Cupertinao的组件库,上面的CupertinoPageRoute就是iOS的路由处理,可以看到差异很明显,页面page(这篇文章主要介绍page形式)形式的代码有自定义实现了手势_CupertinoBackGestureDetector,他通过参数方法enabledCallback来动态获取左滑手势是否有效。它的内部实现如下:

        可以看到enabledCallback的来源是route.popGestureEnabled,到此就是最终的位置了。通过断点可以看到,(前提是二级页面设置了PopScope的canPop为false)当Navigator的动态路由方式的时候,此处是false,左滑返回无效,一般其他的方式路由来的此处是true,左滑返回可以。

        由此而来,问题就出现在了route的popGestureEnabled上面,我们可以聚焦在此处,点击寻根,可以追溯到ModalRoute的popGestureEnabled(上面已截图,本文第三张图),问题就出在了第三个判断中的popDisposition==RoutePopDisposition.doNotPop上面,再往上看popDisposition的来源如下:

        问题的原因应当是此处路由在iOS设备中路由的转换导致canPopNotifier的变更出现的问题。

下面我们参考看下Get的PageRoute解决关键代码:

        可以看到GetX的最新调整将路由的手势带出来,判断处理 解决此次Flutter的iOS PopScope问题。(当然这只是表象比较明显的位置,具体详细大家有兴趣可以自行点进去再细致研究)

相关文章:

Flutter PopScope对于iOS设置canPop为false无效问题

这个问题应该出现很久了,之前的组件WillPopScope用的好好的,flutter做优化打算“软性”处理禁用返回手势,出了PopScope,这个组件也能处理在安卓设备上的左滑返回事件。但是iOS上面左滑返回手势禁用,一直无效。 当然之…...

第十次CCF-CSP认证(含C++源码)

第十次CCF-CSP认证 分蛋糕满分题解 学生排队满分题解 Markdown语法题目解读满分代码 结语 分蛋糕 题目链接 满分题解 基本思路:我们需要保证除了最后一个小朋友之外的所有人,分得的蛋糕都大于等于给定的K值,为什么是大于等于,是…...

leetcode51.N 皇后 回溯算法求解 + 效率优化

🎯 这篇文章探讨了解决经典N皇后问题的方法,采用回溯算法在标准棋盘上放置皇后,确保它们之间不能相互攻击。文中首先介绍了基本的思路和实现方式,通过递归尝试每个可能的位置并回退错误选择。为了提升效率,进一步提出了…...

使用 PerformanceObserver 实现网页性能优化的最佳实践

前言 在当今的网页开发中,性能监控已经成为确保用户体验的一个关键部分。用户对网站的速度和响应性越来越敏感,性能问题可能直接影响用户的满意度和留存率。因此,了解并使用合适的工具来监控和优化网页性能显得尤为重要。 今天,我…...

单口路由器多拨号ADSL实现方法

条件是多拨号场景,公司路由器接口不够用...

HW基本的sql流量分析和wireshark 的基本使用

前言 HW初级的主要任务就是看监控(流量) 这个时候就需要我们 了解各种漏洞流量数据包的信息 还有就是我们守护的是内网环境 所以很多的攻击都是 sql注入 和 webshell上传 (我们不管对面是怎么拿到网站的最高权限的 我们是需要指出它是…...

Vue 过滤器深度解析与应用实践

文章目录 1. 过滤器概述1.1 核心概念1.2 过滤器生命周期 2. 过滤器基础2.1 过滤器定义2.2 过滤器使用 3. 过滤器高级用法3.1 链式调用3.2 参数传递3.3 动态过滤器 4. 过滤器应用场景4.1 文本格式化4.2 数字处理4.3 数据过滤 5. 性能优化与调试5.1 性能优化策略5.2 调试技巧 6. …...

基于 Docker 搭建 FRP 内网穿透开源项目

有些配置项不知道该不该用,不知道该在哪用,不知道怎么用,所以我自己写个文章简单记录一下做个笔记 本文介绍的是基于 Docker 运行 frps 和 frpc,并通过 TCP 协议简单穿透 SSH 和 HTTP,在观看本文之前请确保你的机器已经安装 Docker 服务端搭建 frps# 连接拥有公网 IP 的…...

【Git学习笔记】Git结构原理及其分支管理模型分析

【Git学习笔记】Git结构原理及其分支管理模型分析 🔥个人主页:大白的编程日记 🔥专栏:Git学习笔记 文章目录 【Git学习笔记】Git结构原理及其分支管理模型分析前言一.认识工作区、暂存区、版本库1.1 版本回退1.2 撤销修改1.3 删…...

找工作、创业的思考和出路

最近有几位朋友在找工作,以及探索职场出路,与他们聊了一些关于找工作和职业发展的话题。而这些话题对大多数职场人来说,都是必须考虑和面对的问题。今天就基于这两个话题展开聊聊。 首先,初入职场时,工作是相对容易找…...

2024山东大学计算机复试上机真题

2024山东大学计算机复试上机真题 2024山东大学计算机复试机试真题 历年山东大学计算机复试上机真题 历年山东大学计算机复试机试真题 在线评测:传动门:pgcode.cn 最长递减子序列 题目描述 输入数字 n,和 n 个整数,输出该数字…...

FLASK和GPU依赖安装

1. 安装所有依赖包 在终端运行以下命令(如果使用 GPU,请确保已安装 CUDA 驱动): # 安装 Flask 和其他依赖 pip install flask sentence-transformers torch# 如果是 GPU 环境,推荐安装 CUDA 版本的 PyTorch&#xff…...

【图论】并查集的学习和使用

目录 并查集是什么? 举个例子 组成 父亲数组: find函数: union函数: 代码实现: fa[] 初始化code: find code: 递归实现: 非递归实现: union code : 画图模拟: 路径压缩&#xff1a…...

3.9/Q2,Charls最新文章解读!

文章题目:Association between remnant cholesterol and depression in middle-aged and older Chinese adults: a population-based cohort study DOI:10.3389/fendo.2025.1456370 中文标题:中国中老年人残留胆固醇与抑郁症的关系&#xff1…...

用Python和Pygame实现打砖块游戏

标题:用Python和Pygame实现打砖块游戏 摘要: 本文将介绍如何使用Python和Pygame库实现一个经典的打砖块游戏。通过这个项目,你将学习到Pygame的基本用法、游戏循环、碰撞检测等知识。 1. 打砖块游戏简介(完整代码在末尾) 打砖块是一款经典的…...

自动化测试-网页聊天室

项目介绍: 针对基于WebSocket协议的网页端即时通讯系统,主导设计并实施全流程自动化测试方案。通过构建模块化测试框架,完成对核心业务场景(用户登录鉴权、消息同步、实时聊天等)的自动化验证,最终达成测试…...

Linux第三次练习

1、创建根目录结构中的所有的普通文件 首先在根目录下面新创建一个test目录,然后将查找到的普通文件新建到test目录下 2、列出所有账号的账号名 3、将/etc/passwd中内容按照冒号隔开的第三个字符从大到小排序后输出所有内容 4、列出/etc/passwd中的第20行-25行内容…...

Redis学习

最开始使用的是MySQL,其使用的是磁盘IO方式较慢,无法满足一分钟成千上万次的访问,而使用内存IO的Redis就可以较好的满足。 Redis是NOSQL(Not Only SQL)中的键值存储数据库,性能好较灵活,是在内存中进行存储。 可以通…...

【CSS3】化神篇

目录 平面转换平移旋转改变旋转原点多重转换缩放倾斜 渐变线性渐变径向渐变 空间转换平移视距旋转立体呈现缩放 动画使现步骤animation 复合属性animation 属性拆分逐帧动画多组动画 平面转换 作用:为元素添加动态效果,一般与过渡配合使用 概念&#x…...

【C/C++算法】从浅到深学习--- 前缀和算法(图文兼备 + 源码详解)

绪论:冲击蓝桥杯一起加油!! 每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论​: 本章将使用八道题由浅到深的带你了解并基本掌握前缀和思想,以及前缀和的基…...

VIC模型率定验证

在气候变化问题日益严重的今天,水文模型在防洪规划,未来预测等方面发挥着不可替代的重要作用。目前,无论是工程实践或是科学研究中都存在很多著名的水文模型如SWAT/HSPF/HEC-HMS等。虽然,这些软件有各自的优点;但是&am…...

二叉树的性质和实现

二叉树开端 我们要理解二叉树我们可以先看看什么是树,如图 这个树虽然没有什么叶子,不是很好看,但是用在这里刚刚好,我们从局部来看它,随便挑一根树枝, 大概是这样,由一根粗的的主干和一些细的…...

【Azure 架构师学习笔记】- Azure Databricks (21) --费用相关

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (20) --Delta Live Table 建议 前言 Databricks是很强大的工具和集成平台,但是随着越来越多地使用它,就没办法必须去面…...

StarRocks + Paimon 在阿里集团 Lakehouse 的探索与实践

作者: 范振: 阿里云计算平台开源 OLAP 负责人,StarRocks 社区 Champion 翁才智: 阿里云技术专家,Apache Paimon PMC Member 导读:阿里集团在推进湖仓一体化建设过程中,依托 StarRocks 强大的 OLAP 查询能力与 Paimon…...

OTP单片机调试工具之—单线数据编码

OTP单片机调试工具在实现过程中离不开单线数据的传输,那么使用哪一种方式的数据编码会比较好呢? 我所了解的主要有以下三种: 1.UART(串口),这种方式在单片机和pc之间进行传输都非常常见,效率比较…...

你的完美主义:从缺陷到超能力

所属专栏:《逻辑辨证系列》 前情回顾: 《完美还是完成》(一):完成还是完美—完成大于完美 时间、机会、情绪成本 先完成 … 本期: 《完美还是完成》(二):你的完美主…...

zsh: command not found: adb 报错问题解决

哈喽小伙伴们大家好,我是小李,今天,我满怀信心想要在本地跑一下pda,然而, what? 居然报错了!!别逗我啊! 好吧,究其原因:没有配置好sdk 那就配呗。 首先,…...

应急响应靶机练习-Linux2

1.背景 前景需要:看监控的时候发现webshell告警,领导让你上机检查你可以救救安服仔吗!! 挑战内容: (1)提交攻击者IP (2)提交攻击者修改的管理员密码(明文) (…...

进程间通信--匿名管道

进程间通信介绍 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件&…...

ctfshow-xxs-316-333-wp

316.反射型 XSS(-326都是反射型) js恶意代码是存在于某个参数中,通过url后缀进行get传入,当其他用户点进这个被精心构造的url链接时,恶意代码就会被解析,从而盗取用户信息。 来看题,先简单测试…...

顺序表和链表的对比(一)

前言 今天给小伙伴们分享的是在数据结构中顺序表和链表的对比。它们在计算机科学和软件开发中具有广泛的应用,是理解更复杂数据结构(如栈、队列、树、图等)的基础。这次将会给大家从定义初始化,以及功能增删查改上进行详细对比&a…...

蓝思科技冲刺港股上市,双重上市的意欲何为?

首先,蓝思科技冲刺港股上市,这一举措是其国际化战略进入实质性阶段的重要标志。通过港股上市,蓝思科技有望进一步拓宽融资渠道,这不仅能够为公司带来更加多元化的资金来源,还能够降低对单一市场的依赖风险,…...

【C++项目实战】校园公告搜索引擎:完整实现与优化指南

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、项目概述 📖1.项目背景 📖2.主要功能 📖3.界面展…...

C语言每日一练——day_8

引言 针对初学者,每日练习几个题,快速上手C语言。第八天。(连续更新中) 采用在线OJ的形式 什么是在线OJ? 在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用…...

单片机农业大棚浇花系统

标题:单片机农业大棚浇花系统 内容:1.摘要 本文针对传统农业大棚浇花方式效率低、精准度差的问题,提出了一种基于单片机的农业大棚浇花系统。该系统以单片机为核心控制器,通过土壤湿度传感器实时采集土壤湿度数据,并将数据传输至单片机进行处…...

Kubernetes 单节点集群搭建

Kubernetes 单节点集群搭建教程 本人尝试基于Ubuntu搭建一个单节点K8S集群,其中遇到各种问题,最大的问题就是网络,各种镜像源下载不下来,特此记录!注意:文中使用了几个镜像,将看来可能失效导致安…...

windows安装两个或多个JDK,并实现自由切换

我用两个JDK来做演示,分别是JDK8和JDK17(本人已安装JDK8,所以这里只演示JDK17的安装)。 1、下载JDK17安装 Java Downloads | Oracle 2、安装JDK17,这里忽略。直接双击软件,点击下一步就可以。 3、配置环境变量 在系统变量中新建一个CLASSP…...

如何打包数据库mysql数据,并上传到虚拟机上进行部署?

1.连接数据库,使得我们能看到数据库信息,才能进行打包上传 2. 3. 导出结果如下,是xml文件 4.可以查询每个xml文件的属性,确保有大小,这样才是真实导出 5跟着黑马,新建文件夹,并且把对应的东西放…...

fastapi +angular​迷宫求解可跨域

说明:我计划使用fastapi angular,实现​迷宫路径生成与求解 后端功能包括: 1.FastAPI搭建RESTful接口。写两个接口, 1.1生成迷宫, 1.2求解路径 前端功能包括 1.根据给定的长宽值,生成迷宫 2.点击按钮&…...

CobaltStrike详细使用及Linux上线

1、工具准备 cs工具 将teamserver.zip放进服务端给必要文件增加可执行文件( 执行时会有提示 )服务端启动服务监听 sudo ./teamserver <IP地址> <密码> [c2配置文件]客户端直接连接即可端口默认&#xff1a;50050主机&#xff1a;服务端ip地址2、基础配置 启动监听…...

WSL2 Ubuntu安装GCC不同版本

WSL2 Ubuntu安装GCC不同版本 介绍安装gcc 7.1方法 1&#xff1a;通过源码编译安装 GCC 7.1步骤 1&#xff1a;安装编译依赖步骤 2&#xff1a;下载 GCC 7.1 源码步骤 3&#xff1a;配置和编译步骤 4&#xff1a;配置环境变量步骤 5&#xff1a;验证安装 方法 2&#xff1a;通过…...

WPF CommunityToolkit.MVVM库的简单使用

CommunityToolkit.MVVM 是 .NET 社区工具包中的一部分&#xff0c;它为实现 MVVM&#xff08;Model-View-ViewModel&#xff09;模式提供了一系列实用的特性和工具&#xff0c;能帮助开发者更高效地构建 WPF、UWP、MAUI 等应用程序。以下是关于它的详细使用介绍&#xff1a; 1…...

4个 Vue 路由实现的过程

大家好&#xff0c;我是大澈&#xff01;一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员&#x1f468;&#x1f3fb;‍&#x1f4bb;&#xff0c;关注我&#xff0c;科技未来或许我能帮到你&#xff01; Vue 路由相信朋友们用的都很熟了&#xff0c;但是你知道 Vue 路由…...

Compose 实践与探索十 —— 其他预先处理的 Modifier

1、PointerInputModifier PointerInputModifier 用于定制触摸&#xff08;包括手指、鼠标、悬浮&#xff09;反馈算法&#xff0c;实现手势识别。 1.1 基本用法 最简单的使用方式就是通过 Modifier.clickable() 响应点击事件&#xff1a; Box(Modifier.size(40.dp).backgro…...

基于Python的天气预报数据可视化分析系统-Flask+html

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统登录 可视化界面 天气地图 天气分析 历史天气 用户管理 摘要 本文介绍了基于大数据…...

“消失的中断“

“消失的中断” 1. 前言 在嵌入式开发过程中&#xff0c;中断必不可少。道友们想必也经常因为中断问题头疼不已&#xff0c;今天来说说一个很常见的问题&#xff0c;“消失的中断”。最近项目在使用第三方MCAL的时候&#xff0c;就遇到了I2C中断丢失的问题&#xff0c;排查起…...

对C++面向对象的理解

C的面向对象编程&#xff08;OOP&#xff09;是其核心特性之一&#xff0c;通过类&#xff08;Class&#xff09;和对象&#xff08;Object&#xff09;实现数据和行为的封装&#xff0c;支持继承、多态和抽象等核心概念。以下是关键点解析&#xff1a; 1. 类&#xff08;Class…...

代码随想录-训练营-day52

97. 小明逛公园 (kamacoder.com) #include<iostream> #include<vector> using namespace std; int main(){int n,m,u,v,w;cin>>n>>m;vector<vector<vector<int>>> grid(n1,vector<vector<int>>(n1,vector<int>(n1…...

Java File 类详解

1. 概述 File 类是 Java 提供的用于文件和目录路径名的抽象表示。它能够用于创建、删除、查询文件和目录的信息&#xff0c;但不用于读写文件内容。如果需要对文件进行读写&#xff0c;可以结合 FileReader、FileWriter、BufferedReader 等类来完成。 2. File 类的构造方法 …...

JS实现省份地级市的选择

JS实现省份地级市的选择 效果展示&#xff1a; 代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><ti…...