ExtendedImage.file constructor
- File file, {
- Key? key,
- double scale = 1.0,
- String? semanticLabel,
- bool excludeFromSemantics = false,
- double? width,
- double? height,
- Color? color,
- Animation<
double> ? opacity, - BlendMode? colorBlendMode,
- BoxFit? fit,
- AlignmentGeometry alignment = Alignment.center,
- ImageRepeat repeat = ImageRepeat.noRepeat,
- Rect? centerSlice,
- bool matchTextDirection = false,
- bool gaplessPlayback = false,
- FilterQuality filterQuality = FilterQuality.low,
- LoadStateChanged? loadStateChanged,
- BoxShape? shape,
- BoxBorder? border,
- BorderRadius? borderRadius,
- Clip clipBehavior = Clip.antiAlias,
- bool enableLoadState = false,
- BeforePaintImage? beforePaintImage,
- AfterPaintImage? afterPaintImage,
- ExtendedImageMode mode = ExtendedImageMode.none,
- bool enableMemoryCache = true,
- bool clearMemoryCacheIfFailed = true,
- DoubleTap? onDoubleTap,
- InitGestureConfigHandler? initGestureConfigHandler,
- bool enableSlideOutPage = false,
- BoxConstraints? constraints,
- Key? extendedImageEditorKey,
- InitEditorConfigHandler? initEditorConfigHandler,
- HeroBuilderForSlidingPage? heroBuilderForSlidingPage,
- bool clearMemoryCacheWhenDispose = false,
- Key? extendedImageGestureKey,
- int? cacheWidth,
- int? cacheHeight,
- bool isAntiAlias = false,
- double? compressionRatio,
- int? maxBytes,
- bool cacheRawData = false,
- String? imageCacheName,
- EdgeInsets layoutInsets = EdgeInsets.zero,
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 scailing 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.opacity,
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,
this.layoutInsets = EdgeInsets.zero,
}) :
// FileImage is not supported on Flutter Web therefore neither this method.
assert(
!kIsWeb,
'ExtendedImage.file is not supported on Flutter Web. '
'Consider using either ExtendedImage.asset or ExtendedImage.network instead.',
),
assert(cacheWidth == null || cacheWidth > 0),
assert(cacheHeight == null || cacheHeight > 0),
image = ExtendedResizeImage.resizeIfNeeded(
provider: ExtendedFileImageProvider(
file,
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);