NetworkImage和Image.network的区别?

时间:2018-09-09 09:09:06

标签: dart flutter

两者是否有区别?

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

1 个答案:

答案 0 :(得分:9)

  

两者是否有区别?

是的。他们是不同的。

  • 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. 在原始图像加载时显示占位符的
  3. FadeInImageImageProvider属性也需要使用image。因此,您可以NetworkImage(http://image.com)提供它。

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