Flutter组件学习(4)图片Image

标签: flutter  android  

 

介绍

关于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)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文为u010184528原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010184528/article/details/106522300

智能推荐

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说你心里想的数...