一尘不染

NetworkImage和Image.network的区别?

flutter

两者有什么区别吗?

缺点是什么?在正常情况下哪个更容易使用?


阅读 247

收藏
2020-08-13

共1个答案

一尘不染

两者有什么区别吗?

是。它们不一样。

  • NetworkImage类创建一个对象,该对象从src传递给它的URL中提供图像。它不是小部件,也不会在屏幕上输出图像。
  • Image.network创建一个在屏幕上显示图像的小部件。它只是Image类(有状态的小部件)上的命名构造函数。它image使用设置属性NetworkImage。该image属性最终用于显示图像。
        class Image extends StatefulWidget{
      Image(...){}; //default Constructor


      //the argument src is passed to the NetworkImage and assinged to the image property
      Image.network(String src, {...}) : image = NetworkImage(src, ...);


      final ImageProvider image;

      @override
      Widget build(BuildContext context){
        display the image
        return RawImage(image: image,
          ...
        );
      }
    }

缺点是什么?在正常情况下哪个更容易使用?

没有缺点。您应该使用适合需要的那一种。例如考虑:

  1. 显示显示代表用户的圆圈的CircleAvatar小部件backgroundImage。它需要一个ImageProvider。所以你通过NetworkImage(http://image.com)
  2. 在原始图像加载时显示占位符的FadeInImage也具有ImageProviderimage属性。所以你可以提供它NetworkImage(http://image.com)

如果您只想在屏幕上将图像显示为小部件,请在Image.network需要的NetworkImage地方使用ImageProvider

2020-08-13