ExtendedImage.memory constructor

ExtendedImage.memory(
  1. Uint8List bytes, {
  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,
  40. double? compressionRatio,
  41. int? maxBytes,
  42. bool cacheRawData = false,
  43. String? imageCacheName,
})

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

The bytes, 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.

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.memory(
  Uint8List bytes, {
  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,
  double? compressionRatio,
  int? maxBytes,
  bool cacheRawData = false,
  String? imageCacheName,
})  : assert(cacheWidth == null || cacheWidth > 0),
      assert(cacheHeight == null || cacheHeight > 0),
      image = ExtendedResizeImage.resizeIfNeeded(
        provider: ExtendedMemoryImageProvider(
          bytes,
          scale: scale,
          cacheRawData: cacheRawData,
          imageCacheName: imageCacheName,
        ),
        compressionRatio: compressionRatio,
        maxBytes: maxBytes,
        cacheWidth: cacheWidth,
        cacheHeight: cacheHeight,
        cacheRawData: cacheRawData,
        imageCacheName: imageCacheName,
      ),
      constraints = (width != null || height != null)
          ? constraints?.tighten(width: width, height: height) ??
              BoxConstraints.tightFor(width: width, height: height)
          : constraints,
      handleLoadingProgress = false,
      super(key: key);