ExtendedImage.file constructor

ExtendedImage.file(
  1. File file,
  2. {Key key,
  3. double scale = 1.0,
  4. String semanticLabel,
  5. bool excludeFromSemantics = false,
  6. double width,
  7. double height,
  8. Color color,
  9. BlendMode colorBlendMode,
  10. BoxFit fit,
  11. Alignment alignment = Alignment.center,
  12. ImageRepeat repeat = ImageRepeat.noRepeat,
  13. Rect centerSlice,
  14. bool matchTextDirection = false,
  15. bool gaplessPlayback = false,
  16. FilterQuality filterQuality = FilterQuality.low,
  17. LoadStateChanged loadStateChanged,
  18. BoxShape shape,
  19. BoxBorder border,
  20. BorderRadius borderRadius,
  21. Clip clipBehavior = Clip.antiAlias,
  22. bool enableLoadState = false,
  23. BeforePaintImage beforePaintImage,
  24. AfterPaintImage afterPaintImage,
  25. ExtendedImageMode mode = ExtendedImageMode.none,
  26. bool enableMemoryCache = true,
  27. bool clearMemoryCacheIfFailed = true,
  28. DoubleTap onDoubleTap,
  29. InitGestureConfigHandler initGestureConfigHandler,
  30. bool enableSlideOutPage = false,
  31. BoxConstraints constraints,
  32. Key extendedImageEditorKey,
  33. InitEditorConfigHandler initEditorConfigHandler,
  34. HeroBuilderForSlidingPage heroBuilderForSlidingPage,
  35. bool clearMemoryCacheWhenDispose = false,
  36. Key extendedImageGestureKey,
  37. int cacheWidth,
  38. int cacheHeight,
  39. bool isAntiAlias = false}
)

Creates a widget that displays an ImageStream obtained from a File.

The file, scale, and repeat arguments must not be null.

Either the width and height arguments should be specified, or the widget should be placed in a context that sets tight layout constraints. Otherwise, the image dimensions will change as the image is loaded, which will result in ugly layout changes.

On Android, this may require the android.permission.READ_EXTERNAL_STORAGE permission.

Use filterQuality to change the quality when scaling an image. Use the FilterQuality.low quality setting to scale the image, which corresponds to bilinear interpolation, rather than the default FilterQuality.none which corresponds to nearest-neighbor.

If excludeFromSemantics is true, then semanticLabel will be ignored.

Implementation

ExtendedImage.file(
  File file, {
  Key key,
  double scale = 1.0,
  this.semanticLabel,
  this.excludeFromSemantics = false,
  this.width,
  this.height,
  this.color,
  this.colorBlendMode,
  this.fit,
  this.alignment = Alignment.center,
  this.repeat = ImageRepeat.noRepeat,
  this.centerSlice,
  this.matchTextDirection = false,
  this.gaplessPlayback = false,
  this.filterQuality = FilterQuality.low,
  this.loadStateChanged,
  this.shape,
  this.border,
  this.borderRadius,
  this.clipBehavior = Clip.antiAlias,
  this.enableLoadState = false,
  this.beforePaintImage,
  this.afterPaintImage,
  this.mode = ExtendedImageMode.none,
  this.enableMemoryCache = true,
  this.clearMemoryCacheIfFailed = true,
  this.onDoubleTap,
  this.initGestureConfigHandler,
  this.enableSlideOutPage = false,
  BoxConstraints constraints,
  this.extendedImageEditorKey,
  this.initEditorConfigHandler,
  this.heroBuilderForSlidingPage,
  this.clearMemoryCacheWhenDispose = false,
  this.extendedImageGestureKey,
  int cacheWidth,
  int cacheHeight,
  this.isAntiAlias = false,
})  : assert(cacheWidth == null || cacheWidth > 0),
      assert(cacheHeight == null || cacheHeight > 0),
      assert(isAntiAlias != null),
      image = ResizeImage.resizeIfNeeded(
        cacheWidth,
        cacheHeight,
        ExtendedFileImageProvider(
          file,
          scale: scale,
        ),
      ),
      assert(alignment != null),
      assert(repeat != null),
      assert(filterQuality != null),
      assert(matchTextDirection != null),
      constraints = (width != null || height != null)
          ? constraints?.tighten(width: width, height: height) ??
              BoxConstraints.tightFor(width: width, height: height)
          : constraints,
      handleLoadingProgress = false,
      super(key: key);