美文网首页Flutter
【Flutter】图片及ICON(二)

【Flutter】图片及ICON(二)

作者: Colleny_Z | 来源:发表于2019-05-14 20:07 被阅读0次

    一、图片

    图片类似UIImageView,在Flutter中两种方式加载图片,本地与网络。

    1. 从asset即本地加载图片

    • 在工程根目录下创建一个images目录,并将所需要的图片xxx.png拷贝到该目录。

    • 在pubspec.yaml中的flutter部分添加如下内容(默认此文件下面会有注释,只需要将图片相关的注释打开即可)如下:

      assets:
      - images/xxx.png
      - images/xxxx.png
    

    注意这里有个坑: 由于 yaml 文件对缩进严格,所以必须严格按照每一层两个空格的方式进行缩进,此处assets前面应有两个空格。否则图片不能正常的显示

    2.从网络加载图片

    • 使用构造函数 Image.network 从网络加载、显示图片
    相关图片的类官方简介
    Image

    Image widget有一个必选的image参数,它对应一个ImageProvider。

    ImageProvider

    ImageProvider 是一个抽象类,主要定义了图片数据获取的接口load(),从不同>的数据源获取图片需要实现不同的ImageProvider ,如AssetImage是实现了从>Asset中加载图片的ImageProvider,而NetworkImage实现了从网络加载图片的ImageProvider。

                Image(
                 image: AssetImage('images/1.jpeg'),
                  width: 300.0,
                  height: 200.0,
                ),
    
                Image(
                  image: NetworkImage(
                     'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2153937626,1074119156&fm=27&gp=0.jpg'),
                  width: 200.0,
                  height: 200.0,
                ),
    
    运行效果
    参数

    Image的主要常用参数如下,可自行尝试:

    const Image({
      ...
      this.width, //图片的宽
      this.height, //图片高度
      this.color, //图片的混合色值
      this.colorBlendMode, //混合模式
      this.fit,//缩放模式
      this.alignment = Alignment.center, //对齐方式
      this.repeat = ImageRepeat.noRepeat, //重复方式
      ...
    })
    

    这里引用一张官方的关于fit的参数的图,比较直观


    fit不同显示样式.png



    二、ICON

    Flutter中,icon是将图标做成字体文件,然后通过指定不同的字符而显示不同的图片。在字体文件中,每一个字符都对应一个位码,而每一个位码对应一个显示字形,不同的字体就是指字形不同,即字符对应的字形是不同的。

    简单的说,将这些图标当做文字一样去使用。

    在Flutter开发中,iconfont和图片相比有如下优势:

    1. 体积小:可以减小安装包大小。
    2. 矢量的:iconfont都是矢量图标,放大不会影响其清晰度。
    3. 可以应用文本样式:可以像文本一样改变字体图标的颜色、大小对齐等。
    4. 可以通过TextSpan和文本混用。
    使用Material Design字体图标

    pubspec.yaml文件中,Flutter默认包含了一套Material Design的字体图标,配置如下,Material Design所有图标可以在其官网查看:https://material.io/tools/icons/

    flutter:
      uses-material-design: true
    
    

    我们看一个简单的例子:

    String icons = "";
    icons += "\uE914";
    icons += " \uE000";
    icons += " \uE90D";
    
    Text(icons,
      style: TextStyle(
          fontFamily: "MaterialIcons",
          fontSize: 24.0,
          color: Colors.green
      ),
    );
    
    
    运行效果,跟文字没啥两样

    上面的如\uE000一样的不知符号并不友好,所以,Flutter封装了一个IconDataIcon来专门显示字体图标,(在开发的时候会有提示),更改代码如下:

    Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Icon(Icons.accessible,color: Colors.green,),
        Icon(Icons.error,color: Colors.green,),
        Icon(Icons.fingerprint,color: Colors.green,),
      ],
    )
    
    
    使用自定义字体图标

    如果默认的不能满足,我们也可以使用自定义字体图标。iconfont.cn上有很多字体图标素材,步骤也很简单,这里不再重复,可参考https://book.flutterchina.club/chapter3/img_and_icon.html

    相关文章

      网友评论

        本文标题:【Flutter】图片及ICON(二)

        本文链接:https://www.haomeiwen.com/subject/vuyeaqtx.html