flutter图片点击跳转_Flutter 你需要知道的那些事 01

2023-11-04

公众号「AndroidTraveler」首发。

1. width 属性

对于设置控件宽度填充父控件这件事情,在 Android 里面,只需要设置 MATCH_PARENT 即可。

但是在 Flutter 里面却不是这样,因为 Flutter 要具体的数值。

所以我们可以这样考虑,假设我这个值非常大,比所有市面上的设备宽度还要大,那么是不是表现出来就是充满父控件了。

所以这边的做法是设置为无限,即 double.infinite

我们以一个常用场景来说明。

比如设置图片填充屏幕宽度。

刚开始没有设置的代码如下:

效果:

可以看到没有设置的情况下,显示会根据图片自身的宽高显示。

这个时候如果设置 width 为无穷大,修改代码如下:

效果

什么情况,没起作用?

这个时候不要慌,我们来给大家分析分析。

以后大家遇到类似问题也可以这样分析。

我们通过给 Image 外面套上一层 Container,然后设置背景颜色来对比一下。

代码如下:

效果如下:

可以看到,设置宽度之后,Image 确实是填充了宽度,只不过由于图片本身没有那么宽,因此看起来就以为是没有起作用。

那么如何让图片可以填充宽度呢?

这个就涉及到图片的填充模式了。

2. fit 属性

点击 Image 的 fit 属性进入源码可以看到如下:

我们再点一下 BoxFit,可以看到如下:

相信大家看到源码的注释应该很清楚每个值的意义了。

如果你还不清楚,可以点击注释里面对应的链接去查看示意图。

比如以我们这个实际应用场景填充宽度为例,那么我们可以看到 fitWidth 应该是符合我们要求的,我们点击注释的链接,跳转可以看到图片如下:

很形象的做了几种情况的示意。我们设置了 Image 的 fit 属性如下:

效果:

可以看到已经满足我们的需求了。

温馨提示:测试完之后不要忘记去掉测试的 Container 以及对应颜色哦~

3. print

我们知道在 Android 里面,当我们 try catch 之后,我们打印异常基本会写出类似下面代码:

在 Flutter 也有异常捕获。

你可能会习惯的写出如下代码:

但是切记,不要使用上面的写法。

因为当 e 为 null 时,上面的 print 不会执行打印。

这可能会误导你。因为你在成功的时候加上打印语句,异常捕获也加上打印语句。但是程序就是没有打印。你就会觉得很奇怪。

实际上当 e 为 null 时,print 语句会报错,+ 号连接的左右不能是 null,所以不会正常打印。因此请避免上面的写法。可以用下面的替换写法:

4. GestureDetector

我们知道如果要给一个 Widget 增加点击事件,最简单的方法就是套一层 GestureDetector。

但是有时候你这样做了,却发现有些“隐患”,或者说,有些你意料不到的事情。

这里用一个场景来告诉你,你平时可能没有发现的细节。

微博里面有点赞这个小组件,我们写下如下代码:

效果如下:

假设我们要求给这个点赞组件加上点击事件,那么我们直接给 Row 套上 GestureDetector Widget。

点击点赞组件确实会打印 onTap,但是如果你点击了点赞图标和数字中间的白色区域,你会发现点击事件没有回调,没有打印。

这个时候有两种解决方法:

1. 给空白组件设置 color 属性,颜色值设置透明

对于 Container 设置的 padding 可以直接设置,对于我们这里例子的 SizeBox 需要改为如下:

为了方便测试,这边将宽度改为 15。

所以对于设置 GestureDetector 的 Container,如果没有设置 color 属性,那么点击空白不会回调。

2. 设置 GestureDetector 的 behavior 属性(推荐方式)

其实如果你需要空白区域也响应点击,只需要设置一下 GestureDetector 的 behavior 属性即可。

behavior 默认值为 HitTestBehavior.deferToChild,我们这里将其设置为 HitTestBehavior.translucent

代码如下:

这里的点赞图片我直接从网上获取的,你测试可以用随便一张图片代替验证。或者用两个文本来验证也是可以的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flutter图片点击跳转_Flutter 你需要知道的那些事 01 的相关文章

  • gdb调试动态库

    Happy Niu Year step1 编译一个linux动态库 头文件get h ifndef get H define get H int get int set int a endif 实现文件get cpp include
  • JavaScript 价格正则表达式

    正则表达式如下 1 9 d d 1 2 0 d 1 2 价格符合两种格式 1 9 d d 1 2 1 9开头 后跟是0 9 可以跟小数点 但小数点后要带上1 2位小数 类似2 2 0 2 1 2 22等 0 d 1 2 0开头 后可以跟小数
  • VS 2022新特性_Visual Studio2022新功能

    一 VS 2022新特性 Visual Studio2022新功能 Visual Studio 2022 正式版来了 默认支持 Net 6 默认支持C 10 下载地址 https visualstudio microsoft com zh
  • Controller 层编写测试类

    前后端分离以后 Controller 部分的代码当然也要进行测试 但是往常我们的测试类无法发送http请求 这时就需要用到 MockMvc 一个简单的例子 测试类 RunWith SpringRunner class SpringBootT
  • 百度ueditor富文本编辑器数据回显为代码问题

    使用ueditor时 从数据库获取到html数据后 直接在ueditor里显示为代码 可通过以下方式修复
  • 卷积网络中,卷积操作后,激活和池化的顺序,应该先激活还是先池化

    对图像卷积操作后 接下来是先激活还是先池化 现在存在两种顺序 卷积 gt 激活 gt 池化 卷积 gt 池化 gt 激活 先给出结论 如果使用最大池化 两种顺序的结果是一样的 如果使用平均池化 建议采用第1种顺序 即卷积 gt 激活 gt
  • 表单验证实现React-router跳转

    方法一 broserHistory push handleSubmit e e preventDefault const path demo broserHistory push path 方法二 context对象方法 export de
  • Burp Suite入门笔记

    转载于 https www cnblogs com Wade James p 9614310 html
  • Cannot find module ‘F:\nodejs\node_modules\http-server\bin\http-server‘

    问题 http server全局安装后仍找不到模块 原因 http server与html文件不在同一目录 解决方案 1 打开http server文件所在位置 复制npm文件夹下的所有文件 2 将所有文件粘贴到html文件所在的目录下 3
  • 详解本地maven私服nexus安装及上传jar包snapshots快照

    目录 1 nexus简介 2 下载nexus 3 启动nexus 4 访问nexus 5 nexus服务介绍 6 相关配置 7 页面上传Release的jar流程 8 上传snapshots快照jar 9 项目中引用本地私服 1 nexus
  • Vue3+vant库处理showToast报错正确姿势:Can‘t resolve ‘vant/es/show-toast‘

    目录 1 首先 要排除是自己配置全局引用错误导致的问题 2 排除不是自己引用问题 进入下一步 移除 babel plugin import 3 在此时 似乎就已经解决showToast报错问题 环境 vant 4 6 3 1 首先 要排除是
  • llinux运维基础:zabbix部署

    一 zabbix安装 安装5 0版本 1 配置仓库 rpm Uvh https repo zabbix com zabbix 5 0 rhel 7 x86 64 zabbix release 5 0 1 el7 noarch rpm yum
  • 云服务器 ftp上传文件大小,云服务器ftp上传文件大小

    云服务器ftp上传文件大小 内容精选 换一换 在本地主机和Windows弹性云服务器上分别安装QQ exe等工具进行数据传输 使用远程桌面连接mstsc方式进行数据传输 该方式不支持断点续传 可能存在传输中断的情况 因此不建议上传大文件 文
  • 打包python脚本的血与泪

    解决Python脚本打包遇到的各种问题 故事背景 以下开始花里胡哨的错误操作 正确方法 故事背景 某日隔壁部门同事请领导帮忙写个脚本 能够完成excel上的高重复度繁复的工作 领导随手交给我 这个东西简单的 日天你去做吧 正在b站摸鱼的我
  • ssm+maven的进销存管理系统

    基于ssm maven的超市进销存管理系统 普通用户主要包含 进货管理 商品管理 库存管理 销售管理 酷虎信息管理 供应商信息管理 管理员比普通用户多了一个用户管理 登录界面 普通用户之进货管理 普通用户之商品信息管理 坤村管理 销售管理
  • vmp版本某数后缀(10-6,js逆向)

    看这篇文章的前提是 读者已经成功请求到了200页面 一 抓包分析 这个站在提交验证码的时候会将识别的内容加密放到后缀中 所以分析后缀也是无奈之举 二 跟栈分析 下个xhr断点 提交验证码 找到这个地方 思路 open和send都经过魔改了

随机推荐

  • Kubernetes入门——Kubernetes实现应用的高可用

    作者简介 胡家靖 百度基础架构部研发工程师 负责函数计算与云原生产品的研发 本文基于百度云原生团队 云原生基础知识概述及实践 系列视频课程 Kubernetes入门 Kubernetes实现应用高可用 梳理 视频课程可点击 https cl
  • 数据库系统概论——第十章 数据库恢复技术

    一 事务的基本概念 1 事务 Transaction 1 概念 是用户定义的一个数据库操作序列 这些操作要么全做 要么全不做 是一个不可分割的工作单位 2 事务和程序是 事务和程序是两个概念 在关系数据库中 一个事务可以是一条SQL语句 一
  • wpf datagrid 表头居中

  • 程序员常用的工具网站

    程序员常用的工具网站 免费书籍 数据库 在线制作流程图 java开发常用工具网站 程序开发导航 面试常看的网站 在线编程 系统设计 springboot学习参考网站 云服务器 LINUX命令学习 免费书籍 免费编程书籍 数据库 在线学习or
  • Python全栈自动化测试--Pycharm专业版安装

    一 下载Pycharm专业版 1 进入官网下载专业版 Download PyCharm Python IDE for Professional Developers by JetBrains 2 选择windows Professional
  • docker-compose实战

    搭建wordpress容器 先用mysql5 6镜像启动一个名字为mysql wordpress的容器 接着基于这个容器我们启动一个wordpress容器 docker run d name mysql wordpress v home z
  • 几个简单的基本的sql语句

    1 选择 select from table1 where 范围 2 插入 insert into table1 field1 field2 values value1 value2 3 删除 delete from table1 wher
  • 项目管理利器—maven(二)

    一 maven的生命周期和插件 完整的项目构件过程包括 清理 编译 测试 打包 集成测试 验证 部署 maven生命周期包括 clean 清理项目 pre clean 执行清理前的工作 clean 清理上一次构建生成的所有文件 post c
  • 【JDBC】使用DBUtils包来管理JDBC

    什么是DBUtils 是JDBC的简化开发工具包 使用它就不用再写很多冗余的代码了 总而言之 就是使得JDBC的操作更加的简单化了 文章目录 为啥要用DBUtils QueryRunner类 使用的数据库 注册驱动并建立起连接 update
  • ping 不通百度问题的解决

    ping 不通百度问题的解决 问题 网络能够ping通百度的ip地址 115 239 210 27这个ip地址 但是ping www baidu com长时间等待无反应 解决方式 碰到这个问题两次了 每次都挺无奈的 第一次解决是通过回退快照
  • 记录:ubuntu18下使用karlibr标定zed双目相机

    一 karlibr的安装 1 安装依赖 sudo apt get install python setuptools python rosinstall ipython libeigen3 dev libboost all dev doxy
  • Python3 面向对象(22)

    Python3 面向对象 Python从设计之初就已经是一门面向对象的语言 正因为如此 在Python中创建一个类和对象是很容易的 本章节我们将详细介绍Python的面向对象编程 如果你以前没有接触过面向对象的编程语言 那你可能需要先了解一
  • JAVA 相关书籍推荐(全)

    一 软件质量 1 代码整洁之道 the clean coder 2 重构 3 clean coder 代码整洁之道 4 编写可读代码的艺术 5 Effective Java 6 架构整洁之道 7 阿里巴巴 Java 开发手册 8 effec
  • 【扩散模型】3、Stable Diffusion 原型

    文章目录 一 背景 二 方法 2 1 感知图像压缩 2 2 潜在扩散模型 2 3 条件机制 三 实验 论文 High Resolution Image Synthesis with Latent Diffusion Models 代码 ht
  • i5 11300h和R5 5600H 参数对比哪个好

    酷睿i5 11300H配置为4个内核及8个线程 具备8MB的L3缓存和5MB的L2缓存 基础频率3 10GHz最高睿频4 40GHz Intel的显卡将集成Xe GPU内核 至于TDP i5 11300H TDP为35W 最高可配置为45W
  • jupyter的简单配置和使用

    更改jupyter文件目录 在应用当中需要输入anaconda prompt找到该命令窗口 会默认打开C盘 此时需要我们输入D 这里需要注意的是后面的冒号也要输入 还有就是d 和D 都是可以的 输入jupyter notebook就可以打开
  • yml配置,简化代码优化不必要的麻烦

    安全平台url security private url 1 getCustomerUrl 2 addCustomerUrl 3 editCustomerUrl 4 appId 5 appKey 6 appSecret 7 代码引用
  • MYSQL——分组

    1 group by 1 group by的含义 将查询结果按照1个或多个字段进 分组 字段值相同的为 组 2 group by可 于单个字段分组 也可 于多个字段分组 根据gender字段来分组 gender字段的全部值有4个 男 中性
  • 前端制作科技感网页登录界面

    注 如需背景图请联系作者 QQ 3416252112 效果图 源码
  • flutter图片点击跳转_Flutter 你需要知道的那些事 01

    公众号 AndroidTraveler 首发 1 width 属性 对于设置控件宽度填充父控件这件事情 在 Android 里面 只需要设置 MATCH PARENT 即可 但是在 Flutter 里面却不是这样 因为 Flutter 要具