NetworkImage和Image.network的区别?

Dan*_*ana 10 dart flutter

它们两者有什么不同吗?

什么是劣势,哪一个更容易在正常情况下使用?

Vam*_*hna 14

它们两者有什么不同吗?

是.它们是不同的.

  • NetworkImage类创建一个对象,该对象从src传递给它的URL 提供图像.它不是小部件,不会将图像输出到屏幕.
  • Image.network创建一个在屏幕上显示图像的小部件.它只是Image类(有状态小部件)上的命名构造函数.它image使用the 设置属性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,
          ...
        );
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

什么是劣势,哪一个更容易在正常情况下使用?

没有缺点.你应该使用适合自己需要的那个.例如考虑:

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

如果您只想将图像显示为屏幕上的小部件,请在预期的任何地方Image.network使用.NetworkImageImageProvider