Flutter组件学习(4)图片Image
介绍
关于Flutter图片的加载有多种形式
方法 释义 Image() 从ImageProvider中获取图片,从本质上看,下面的几个方法都是他的具体实现。 Image.asset(String name) 从AssetBundler中获取图片 Image.network(String src) 显示网络图片 Image.file(File file) 从File中获取图片 Image.memory(Uint8List bytes) 从Uint8List中显示图片
Image-Fit属性
我们先来看一段代码
class HomeText extends StatelessWidget{ @override Widget build(BuildContext context) { return Container( margin: EdgeInsets.all(20), width: 300, height: 300, color: Colors.yellow, child: Image.network( 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591173779064&di=c155ead722524ac488fa65833e4c8cc8&imgtype=0&src=http%3A%2F%2Fimg.mp.itc.cn%2Fupload%2F20161127%2F36b8d95b15ce4f7baa3d938553c850fb_th.jpeg', fit: BoxFit.fill, ), ); } }运行效果
fit设置不同属性图片显示对比
BoxFit.contain 显示整张图片,按照原始比例缩放显示 ![]()
BoxFit.fill 显示整张图片,拉伸填充全部可显示区域 ![]()
BoxFit.cover 按照原始比例缩放,可能裁剪,填满可显示区域 ![]()
BoxFit.fitHeight 按照原始比例缩放,可能裁剪,高度优先填满 ![]()
BoxFit.fitWidth 按照原始比例缩放,可能裁剪宽度优先填满 ![]()
BoxFit.none 图片居中显示,不缩放原图,可能被裁剪 ![]()
BoxFit.scaleDown 显示整张图片,只能缩小或者原图显示 ![]()
常用属性
color: Colors.blue,
colorBlendMode: BlendMode.saturation,
这两个属性要在一起使用,就是颜色和图片混合
BlendMode属性实在是太多了,这里就举一个例子
repeat: ImageRepeat.repeat 设置图片填充方式
centerSlice属性
centerSlice: Rect.fromLTWH(10, 10, 10, 10)
设置图片内部拉伸,相当于在图片内部设置了一个.9图,但是需要注意的是,要在显示图片的大小
大于原图的情况下才可以使用这个属性,要不然会报错
结合Container使用Image
Image.network
class HomeText extends StatelessWidget { @override Widget build(BuildContext context) { return Container( margin: EdgeInsets.all(20), width: 300, height: 300, color: Colors.yellow, child: Image.network( 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591175847643&di=6e41a32b6e6355aacbfae14d03439a83&imgtype=0&src=http%3A%2F%2Fimgwx4.2345.com%2Fdypcimg%2Fdongman%2Fimg%2F2%2F25%2Fsup75205_223x310.jpg', fit: BoxFit.contain, color: Colors.blue, colorBlendMode: BlendMode.saturation, ), ); } }
Image.asset
- 在根目录下新建images文件夹。由于Flutter加载图片时需要2倍图、3倍图,默认图。所以需要同时新建2.0x和3.0x文件夹。(iOS中常有这种)
首先创建文
![]()
然后打开pubspec.yaml,按它的要求写,注意 - image,中间的空格一定不要忘
然后
child: Image.asset( 'images/weixin_invite.png', fit: BoxFit.contain, color: Colors.blue, colorBlendMode: BlendMode.saturation, ),执行结果
Image.file
我的相册有一张图片,复制图片地址
然后在manifest文件中添加读写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />child: Image.file( File('/storage/emulated/0/Download/hkd.png'), fit: BoxFit.contain, color: Colors.blue, colorBlendMode: BlendMode.saturation, ),运行结果啥也没显示,不知道哪里错了
Image.memory
用来将一个
byte数组加载成图片,用法如下:new Image.memory(bytes)
智能推荐
css3常用选择器
先介绍一下基本选择器,如下几种 *:通配符。选择页面的所有元素 E:元素选择器。对页面的一些元素进行选择,如p,div,li等 .class:类选择器 #id:id选择器。一个Id在一个页面中只能选择,这是和类选择器的区别 E F:后代选择器。如ul li。选中ul下的li E>F:子元素选择器。如下,可以用 h1 > strong {color:red;}使h1的子元素strong变...
python is not set from command line or npm configuration
问题 猜测原因 python版本冲突 解决方案 去官网找到最新版本python 点击下载,注意记住你下载的目录,下载好以后,打开这个目录下的文件夹,Python310, 整个文件夹复制一下 在项目里运行npm config list --json 找到python的路径 我的是 C:\\Python27\\python.exe 说明项目里用的还是py...
Java8 Stream流操作
前言 我们常常需要将一个容器转化成另一个容器,或是对这个容器中的数据进行批量处理,这时使用Stream流可以大大减少我们的工作量。 1 Stream概述 Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。 那么什么是Stream? Stream将要处理的元素集合看作一种流,在流的过程中,借助St...
带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑
在Windows下进行C++的开发,不可避免的要与Windows的底层库进行交互,然而VS下的一项设置MT、MTd、MD和MDd却经常让人搞迷糊,相信不少人都被他坑过,特别是你工程使用了很多第三库的时候,及容易出现各种链接问题。看一下下面这个错误提示: LIBCMT.lib(_file.obj) : error LNK2005: ___initstdio already defined...
git 设置 gitignore 忽略 __pycache__
清除git缓存中的pycache 直接删掉硬盘上的文件 如果我想保留硬盘上的这个文件,而只删除版本管理中的文件,就需要加入--cached参数。 切换分支出现问题 尽管我已经删除了__pycache__,硬盘也没有了,但是切换分支的时候依然是会提示本地重写的情况。 提示:需要我在切换分支之前,提交一次更新。 提交了更新之后,再来尝试切换分支,如下: 成功了,说明当做了任何变更之后,切换分支前需要执...
猜你喜欢
人生苦短,我用Python(二)— 爬取会议网站 EasyChair Smart CFP
寒假留校帮学长写了个爬虫,抓取会议网站上一些CFP信息。想着把一些知识点、坑点记下来,一来做个小总结给工作收收尾,二是以后再遇到好从容应对。 这是我写的第二个比较完善的爬虫了,比第一个要简单许多,完全过程化的代码,而且easychair这个网站页面布局比较友好,适合python新手、前端小白入门练习。但这个网站反爬比较厉害,写爬虫的过程中就被ban了好几次…… 制定抓取...
(三)Single Threaded Execution模式
一、定义 一个线程执行。有时也称为Critical Section(临界区)。 二、模式案例 案例: 假设有三个人,频繁地通过一扇门,规定每次只能通过一个人,当通过一个人时,程序会将通过的总人次加1,同时记录该次通过人的姓名和出生地。 门的定义: 人的定义 测试类 多次执行后发现可能出现以下结果: &...
Linux服务管理之系统管理员需要掌握的命令
为什么80%的码农都做不了架构师?>>> systemd的主要命令行工具是systemctl。大多数Linux系统管理员应该都已经非常熟悉系统服务和init系统管理,比如service,chkconfig和telinit命令的使用。systemd也完成同样的管理任务,只是命令工具systemctl的语法有所不同而已。 1. sysvinit和system...
StringBuilder和StringBuffer的区别(检查多线程环境下会触发的问题和异常)
StringBuilder和StringBuffer的区别在哪里? 当接触这个问题的时候,我们可能第一反应就是,StringBuilder是线程不安全的,StringBuffer是线程安全的 为什么StringBuilder是线程不安全,StringBuffer是线程安全? ...
机器学习实战之决策树基础笔记
决策树的优缺点 优点 计算复杂度不高 输出结果容易理解 对中间值的缺失不敏感 可以处理不相关特征数据 缺点 可能会产生过度匹配问题 决策树原理 《机器学习实战》书中讲了二十个问题的游戏的一个例子:就是参与游戏的一方脑子里想着某个事物。其他参与者可以向他提29个问题,但是答案只能用对错来回答。比如最简单的猜数游戏。我心里想一个数是7.然后A说你心里想的数比100小。然后我说正确。然后B说你心里想的数...
















