在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. Python笔记(二十)_多态、组合

    多态 对于函数中的变量,我们只需要知道它这个变量是什么类,无需确切地知道它的子类型,就可以放心地调用类的方法,而具体调用的这个方法是作用在父类对象还是子类对象上,由运行时该对象的确切类型决定,这就是多 ...

  2. python的前景

    最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Python的整体语言难度来讲又比Java简单的很多.尤其是在运维的应用 ...

  3. ios overflow:scroll不顺畅解决办法

    是要在其样式里面添加这段代码就行  -webkit-overflow-scrolling: touch;

  4. 史上最全最常用的正则表达式(转自微信公众号:javascript)

    很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下.给自己留个底,也给朋友们做个参考. ...

  5. exports、module.exports和export、export default到底是咋回事

    地址1:https://segmentfault.com/a/1190000010426778 地址2:https://blog.csdn.net/caixiaowang/article/detail ...

  6. 一波骚操作,我把 SQL 执行效率提高了 10,000,000 倍!

    作者:风过无痕-唐 http://www.cnblogs.com/tangyanbo/p/4462734.html 场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表: create  ...

  7. Linux下查看日志文件

    问题一:日志文件打开,卡死 在公司开发的时候,开发的程序在本地测试正常,但是在测试环境却有问题.这个时候第一反应就是查看日志文件,看看日志文件里面有什么错误信息.我潇洒的执行了一下 vim log.t ...

  8. [poj3074]Sudoku(舞蹈链)

    题目链接:http://poj.org/problem?id=3074 舞蹈链精确覆盖的经典题目,一个数独每个位置的要求,可以得到以下四个约束1.每个位置有且只有一个数字2.每个位置的数字在一行只能出 ...

  9. 65.Longest Increasing Subsequence(最长增长子序列)

    Level:   Medium 题目描述: Given an unsorted array of integers, find the length of longest increasing sub ...

  10. MySQL的数据类型:文本、数字、日期/时间

    在MySQL中,有三种主要的类型:文本.数字和日期/时间类型. 文本类型(text):数据类型                                 描述 CHAR(size) 保存固定长度 ...