美文网首页
Flutter图片控件Image widget

Flutter图片控件Image widget

作者: Destiny_ZRJ | 来源:发表于2019-03-22 15:38 被阅读0次
Image widget

Flutter中用来展示图片的widget

Image支持如下几种类型构造函数:

new Image 用于从ImageProvider获取图像;
new Image.asset 使用key从AssetBundle获得的图像;
new Image.network 从网络URL中获取图片;
new Image.file 从本地文件中获取图片;
new Image.memory 用户从Uint8List获取图像;

在加载项目中的图片资源时,为了让Image能够根据像素密度自动适配不同分辨率的图片,请使用AssetImage 指定图像,并确保在widget树种的“Image” widget上方存在MaterialAppWidgetsAppMediaQuery窗口widget。

Image支持的图片格式

Image支持以下类型的图片:JPEG,PNG,GIF,Animated GIF,WebP,Animated WebP,BMP,和WBMP。

如何加载网络图片?

加载网络图片,需要使用Image.network构造方法:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
        title: 'Welcome to Flutter',
        home: new Image.network('url'));
  }
}
如何加载静态图片,以及处理不同分辨率的图片?

要加载项目中静态图片,需要以下两步:

在 pubspec.yaml 文件中声明图片资源路径;
使用AssetImage 访问图片;

  assets:
  - images/1.png
Image(
     image: AssetImage("images/1.png"),
     width: 50.0,
     height: 50.0,
     )

还可以通过Image.asset来加载静态图片

Image.asset("images/1.png"));
如何加载本地图片?
加载完整路径的本地图片
import 'dart:io';

Image.file(File('本地文件路径')
加载相对路径的本地图片

在pubspec.yaml中添加path_provider插件

import 'package:path_provider/path_provider.dart';
//SD卡的根路径
(await getExternalStorageDirectory()).path;
//临时目录的路径
(await getTemporaryDirectory()).path;
//获取文档目录的路径
(await getApplicationDocumentsDirectory()).path;
如何设置placeholder?

为了设置Placeholder我们需要借助FadeInImage,它能够从内存,本地资源中加载placeholder。

从内存中加载placeholder

安装transparent_image插件

import 'package:transparent_image/transparent_image.dart';

使用FadeInImage.memoryNetwork

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
          title: new Text('加载网络图片'),
        ),
        body: Stack(
          children: <Widget>[
            Center(
                child: new FadeInImage.memoryNetwork(
              image: 'https://tpc.googlesyndication.com/simgad/5662238301179412298',
              placeholder: kTransparentImage /* 透明图片 */,
            )),
          ],
        ));
  }
}
从本地资源中加载placeholder

使用FadeInImage.assetNetwork

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
          title: new Text(''),
        ),
        body: Stack(
          children: <Widget>[
            Center(
                child: new FadeInImage.assetNetwork(
                image:
                  'https://tpc.googlesyndication.com/simgad/5662238301179412298',
                 placeholder: 'images/loading.gif',
            )),
          ],
        ));
  }
}
如何配置图片缓存

相关文章

网友评论

      本文标题:Flutter图片控件Image widget

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