在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. xenserver添加静态路由

    xe network-list name-label= xe network-param-set uuid=48a64512-69e8-6534-f276-8d0c4555f946 other-con ...

  2. Jenkins持续集成_02_添加python项目&设置定时任务

    前言 自动化测试脚本编写后,最终目的都是持续集.持续集成可以实现一天多次部署运行自动化脚本,对功能进行不断监控测试.由于小编使用python编写的自动化脚本,这里仅讲解下如何在Jenkins中添加py ...

  3. Git002--安装

    Git--安装 本文来自于:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00 ...

  4. Mac002--Git安装

    Mac--Git安装 注意:在安装Git前,可先安装homebrew,应用brew命令安装Git即可. 一.Mac 安装homebrew 参考博客:https://blog.csdn.net/yuex ...

  5. mysql高级知识

    2 数据约束 2.1什么数据约束 ​ 对用户操作表的数据进行约束 2.2 默认值 作用: 当用户对使用默认值的字段不插入值的时候,就使用默认值. 注意: 1)对默认值字段插入null是可以的. 2)对 ...

  6. web开发jsp页面遇到的一系列问题

    一:web总结 1.jsp页面知识点巩固 1.1字符串数字格式化转换 <%@ taglib prefix="fmt" uri="http://java.sun.co ...

  7. Meet in the middle算法总结 (附模板及SPOJ ABCDEF、BZOJ4800、POJ 1186、BZOJ 2679 题解)

    目录 Meet in the Middle 总结 1.算法模型 1.1 Meet in the Middle算法的适用范围 1.2Meet in the Middle的基本思想 1.3Meet in ...

  8. hdu1423 最长公共上升子序列

    题目传送门 Greatest Common Increasing Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  9. beeline链接hive报错

    看问题:beeline连接hiveserver2报错.连接串:hive  --service beeline -u jdbc:hive2://localhost:10000/hive 错误:Error ...

  10. Qt 如何配置维护更新工具 MaintenanceTool ?

    http://download.qt.io/static/mirrorlist/ 添加对应版本的地址,拉取最新元信息. http://mirrors.ustc.edu.cn/qtproject/onl ...