在flutter中,image组件有很多构造函数,常用的包括Image.asset(本地图片)和Image.network(远程图片)。

常用属性

不管是显示本地图片还是远程图片,image组件都包含下列常用属性:

  1. alignment :图片的对齐方式
  2. color 和colorBlendMode:设置图片的背景颜色,通常和 colorBlendMode 配合一起使用,这样可以是图片颜色和背景色混合。
  3. fit :fit 属性用来控制图片的拉伸和挤压,这都是根据父容器来的。
  4. repeat :图片的平铺重复方式
  5. width :宽度 一般结合 ClipOval 才能看到效果
  6. height :高度 一般结合 ClipOval 才能看到效果

其中fit包括:

  • BoxFit.fill:全图显示,图片会被拉伸,并充满父容器。
  • BoxFit.contain:全图显示,显示原比例,可能会有空隙。 
  • BoxFit.cover:显示可能拉伸,可能裁切,充满(图片要充满整个容器,还不变形)。
  • BoxFit.fitWidth:宽度充满(横向充满),显示可能拉伸,可能裁切。 
  • BoxFit.fitHeight :高度充满(竖向充满),显示可能拉伸,可能裁切。 
  • BoxFit.scaleDown:效果和 contain 差不多,但是此属性不允许显示超过源图片大小,可小不可大。 

显示远程图片

显示远程图片比较简单,只需要填入图片地址就可以了

import 'package:flutter/material.dart';

void main()=> runApp(MyApp());

class MyApp extends StatelessWidget{
@override
Widget build(BuildContext context){
return MaterialApp(
home:Scaffold(
appBar:AppBar(
title:Text('123123'),
),
body:HomeContent()
),
);
}
} class HomeContent extends StatelessWidget{
@override
Widget build(BuildContext context){
return Center(
child:Container(
child:Image.network(
"https://www.baidu.com/img/bd_logo1.png?where=super",
alignment: Alignment.center,
color:Colors.blue,
colorBlendMode: BlendMode.screen,
fit:BoxFit.cover,
repeat:ImageRepeat.repeat,
),
width:300,
height:300,
decoration: BoxDecoration(
color:Colors.yellow,
border:Border.all(
color:Colors.blue,
width:2.0
),
borderRadius:BorderRadius.all(
Radius.circular(10)
),
),
margin:EdgeInsets.all(15),
alignment:Alignment(0,0)
),
);
}
}

显示本地图片

要显示本地图片,首先需要有本地图片资源,先在项目根目录里面新建images文件夹,用于存放图片:

然后,在项目根目录下面的pubspec.yaml文件里面,引入需要使用的图片。

最后,使用图片就可以了

class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
child:Image.asset('images/a.jpeg',
fit: BoxFit.cover,
),
height: 300,
width: 300,
)
);
}
}

显示圆角图片

在前面的Container组件里面,通过设置了组件的宽高和decoration里的borderRadius可以实现一个圆形的容器,然后再这个圆形容器里面添加图片,就可以实现圆角图片了。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('FlutterDemo')),
body: HomeContent(),
));
}
}
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
width: 300,
height: 300,
decoration: BoxDecoration(
color: Colors.yellow,
borderRadius: BorderRadius.circular(150),
image: DecorationImage(
image:NetworkImage("https://www.itying.com/images/201905/thumb_img/1101_thumb_G_1557845381862.jpg"),
fit: BoxFit.cover
)
),
)
);
}
}

实现圆形图片

在上面,是通过控制图片外层容器的形状来实现圆形图片的,下面,直接使用图片组件中的ClipOval实现圆形图片

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('FlutterDemo')),
body: HomeContent(),
));
}
}
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Container( child: ClipOval(
child: Image.network(
'http://www.ionic.wang/statics/index/images/ionic4.png',
height: 100,
width: 100,
fit: BoxFit.cover,
),
),
)
);
}
}

使用ClipOval实现圆形图片时,如果是正方形的图片,则会默认显示正圆形;如果图片本身是长方形的,则默认显示为椭圆形。如果想要改变显示的形状,可以向上面这样为容器添加宽高(不是图片的宽高),从而改变默认显示形状。

flutter图片组件的更多相关文章

  1. flutter 图片组件

    加入图片的几种方式 Image.asset:加载资源图片,就是加载项目资源目录中的图片,加入图片后会增大打包的包体体积,用的是相对路径. Image.network:网络资源图片,意思就是你需要加入一 ...

  2. Flutter学习笔记(10)--容器组件、图片组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...

  3. 【Flutter学习】基本组件之图片组件Image

    一,概述 Image(图片组件)是显示图像的组件,一个显示图片的widget,支持图像格式:JPEG,PNG,GIF,动画GIF,WebP,动画WebP,BMP和WBMP. Image组件有多种构造函 ...

  4. 【Flutter实战】图片组件及四大案例

    老孟导读:大家好,这是[Flutter实战]系列文章的第三篇,这一篇讲解图片组件,Image有很多高级用法,希望对您有所帮助. 图片组件是Flutter基础组件之一,和文本组件一样必不可少.图片组件包 ...

  5. 迅捷Flutter图片浏览软件

    下载地址: https://github.com/patton88/agile_flutter_picture_show/raw/master/agile_flutter_picture_show_v ...

  6. 图片组件——axure线框图部件库介绍

    我们在后面的组件使用中,都统一使用"从部件区域拖拽图片组件到页面区域中" 1. 图片载入 1.1 将图片组件拖拽到页面区域 1.2 双击图片组件 1.3 选择合适图片,点击打开 1 ...

  7. ReactNative: 使用Image图片组件

    一.简介 在应用程序中,图片组件非常常见,不论是缩略图.大图.还是小图标等等,都需要使用图片组件进行显示.在Web开发中提供了<img/>标签显示图片,在iOS中提供了UIImageVie ...

  8. Flutter 常用组件

    无状态组件(StatelessWidget)是不可变的,这意味着它的属性不能改变,所有的值都是最终的. 有状态组件(StatefulWidget)持有的状态可能在Widget生命周期中发生变化.实现一 ...

  9. Flutter 父子组件传值

    Flutter 父子组件传值 一父传子: 父中: void onButtonChange(val1,val2,val3){ print('============================子向父 ...

随机推荐

  1. 124、TensorFlow替换函数

    # tf.device给你了很多可伸缩性在TensorFlow的计算图中选择放置你的单独的操作 # 在许多的情况下,有很多启发可以工作的很好 # 例如tf.train.replica_device_s ...

  2. day23—JavaScript实现DIV盒子拖拽(原生方式)

    转行学开发,代码100天——2018-04-08 <!doctype html> <html> <head> <meta charset="utf- ...

  3. 神经网络 fann 教程 英文 以及 翻译 参考

    http://fann.sourceforge.net/fann_en.pdf http://blog.csdn.net/fengshuiyue/article/details/41446257

  4. Python 图片格式的转换和尺寸修改

    import cv2 import os import numpy as np from PIL import Image import shutil import sys image_size=14 ...

  5. std::map使用结构体自定义键值

    使用STL中的map时候,有时候需要使用结构题自定义键值,比如想统计点的坐标出现的次数 struct Node{ int x,y; }; ...... map<Node,int>mp; m ...

  6. hive拉链表以及退链例子笔记

    拉链表设计: 在企业中,由于有些流水表每日有几千万条记录,数据仓库保存5年数据的话很容易不堪重负,因此可以使用拉链表的算法来节省存储空间.  例子: -- 用户信息表; 采集当日全量数据存储到 (当日 ...

  7. bfs(火星撞地球)

    Meteor Shower 链接:https://ac.nowcoder.com/acm/contest/997/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  8. Manacher(最长回文串)

    http://acm.hdu.edu.cn/showproblem.php?pid=3068 最长回文 Problem Description 给出一个只由小写英文字符a,b,c...y,z组成的字符 ...

  9. 小Z的袜子(题解)(莫队)

    小Z的袜子(题解)(莫队) Junlier良心莫队 题目 luoguP1494 [国家集训队]小Z的袜子 code #include<bits/stdc++.h> #define lst ...

  10. python------生产者消费者模型 和 管道

    一.为什么要使用生产者和消费者? 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程,在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才 ...