flutter 基础容器wdiget Image,FadeInImage,CachedNetworkImage

1.属性

Image({

    Key key,

    @required ImageProvider image, 

    String semanticLabel, 

    bool excludeFromSemantics: false, 

    double width,  // 控件宽度

    double height, // 控件高度

    Color color, // 图片的混合色值

    BlendMode colorBlendMode, //混合模式

    BoxFit fit, //缩放模式

    AlignmentGeometry alignment: Alignment.center, //对齐方式

    ImageRepeat repeat: ImageRepeat.noRepeat, //重复方式

    Rect centerSlice, 

    bool matchTextDirection: false, 

    bool gaplessPlayback: false 

})

2.本地图片,网络图片,File文件图片,Uint8List资源(byte数组)图片 

 

 

 

  • Image.asset:用来加载本地资源图片  (在工程根目录下创建一个images目录,pubspec.yaml中的flutter部分添加图片)
  • Image.file:用来加载本地(File文件)图片,比如相册图片
  • Image.network:用来加载网络图片
  • Image.memory:用来加载Uint8List资源(byte数组)图片    
Image.asset("images/test.jpg",width: 150.0,),

Image.network("https://avatars2.githubusercontent.com/u/20411648?s=460&v=4",width: 150.0,),

3. fit  该属性用于在图片的显示空间和图片本身大小不同时指定图片的适应模式,BoxFit的枚举

fill:会拉伸填充满显示空间,图片本身长宽比会发生变化,图片会变形

cover:会按图片的长宽比放大后居中填满显示空间,图片不会变形,超出显示空间部分会被剪裁

contain:这是图片的默认适应规则,图片会在保证图片本身长宽比不变的情况下缩放以适应当前显示空间,图片

不会变形

fitWidth:图片的宽度会缩放到显示空间的宽度,高度会按比例缩放,然后居中显示,图片不会变形,超出显示

空间部分会被剪裁

fitHeight:图片的高度会缩放到显示空间的高度,宽度会按比例缩放,然后居中显示,图片不会变形,超出显示

空间部分会被剪裁

none:图片没有适应策略,会在显示空间内显示图片,如果图片比显示空间大,则显示空间只会显示图片中间部分

3.FadeInImage

const FadeInImage({
    Key key,
    @required this.placeholder, //占位符
    @required this.image,
    this.excludeFromSemantics = false,
    this.imageSemanticLabel,
    this.fadeOutDuration = const Duration(milliseconds: 300),
    this.fadeOutCurve = Curves.easeOut,
    this.fadeInDuration = const Duration(milliseconds: 700),
    this.fadeInCurve = Curves.easeIn,
    this.width,
    this.height,
    this.fit,
    this.alignment = Alignment.center,
    this.repeat = ImageRepeat.noRepeat,
    this.matchTextDirection = false,
  })
//内存占位符
//placeholder  --transparent_image(第三方插件) 推荐

FadeInImage.memoryNetwork({
    Key key,
    @required Uint8List placeholder, //占位符
    @required String image,
    double placeholderScale = 1.0,
    double imageScale = 1.0,
    this.excludeFromSemantics = false,
    this.imageSemanticLabel,
    this.fadeOutDuration = const Duration(milliseconds: 300),
    this.fadeOutCurve = Curves.easeOut,
    this.fadeInDuration = const Duration(milliseconds: 700),
    this.fadeInCurve = Curves.easeIn,
    this.width,
    this.height,
    this.fit,
    this.alignment = Alignment.center,
    this.repeat = ImageRepeat.noRepeat,
    this.matchTextDirection = false,
  })
//本地图片占位符

FadeInImage.assetNetwork({
    Key key,
    @required String placeholder, //占位符
    @required String image,
    AssetBundle bundle,
    double placeholderScale,
    double imageScale = 1.0,
    this.excludeFromSemantics = false,
    this.imageSemanticLabel,
    this.fadeOutDuration = const Duration(milliseconds: 300),
    this.fadeOutCurve = Curves.easeOut,
    this.fadeInDuration = const Duration(milliseconds: 700),
    this.fadeInCurve = Curves.easeIn,
    this.width,
    this.height,
    this.fit,
    this.alignment = Alignment.center,
    this.repeat = ImageRepeat.noRepeat,
    this.matchTextDirection = false,
})
import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';


class ImgExp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("image"),),
      body: Column(
        children: <Widget>[
          FadeInImage.memoryNetwork(
            placeholder: kTransparentImage,
            image: "http://www.devio.org/img/avatar.png",
            width: 150.0,
            height: 150.0,

          ),
          FadeInImage.assetNetwork(
            placeholder: "images/loading.gif",
            image: "http://www.devio.org/img/avatar.png",
            width: 150.0,
            height: 150.0,

          ),
        ],
      ),
    );
  }
}

       

3.CachedNetworkImage (cached_network_image插件) 当没有网络的时候,会使用缓存图片

import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';
import 'package:cached_network_image/cached_network_image.dart';

class ImgExp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("image"),
      ),
      body: Column(
        children: <Widget>[
          FadeInImage.memoryNetwork(
            placeholder: kTransparentImage,
            image: "http://www.devio.org/img/avatar.png",
            width: 150.0,
            height: 150.0,
          ),
          FadeInImage.assetNetwork(
            placeholder: "images/loading.gif",
            image: "http://www.devio.org/img/avatar.png",
            width: 150.0,
            height: 150.0,
          ),
          CachedNetworkImage(
            alignment: Alignment.center,
            imageUrl: "http://www.devio.org/img/avatar.png",
            placeholder: (context, url) => CircularProgressIndicator(),
            errorWidget: (context, url, error) => Icon(Icons.error),
          )
        ],
      ),
    );
  }
}

其他图片加载不出来

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值