Skip to content

Commit 215f328

Browse files
authored
Expose image features to CldImageWidget
1 parent fe35dac commit 215f328

File tree

3 files changed

+53
-13
lines changed

3 files changed

+53
-13
lines changed

cloudinary_flutter.iml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
<orderEntry type="sourceFolder" forTests="false" />
1111
<orderEntry type="library" name="Dart SDK" level="project" />
1212
<orderEntry type="library" name="Dart Packages" level="project" />
13+
<orderEntry type="library" name="Flutter Plugins" level="project" />
1314
</component>
1415
</module>

lib/cld_image.dart

Lines changed: 51 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ import 'package:cloudinary_dart/transformation/transformation.dart';
33
import 'package:flutter/widgets.dart';
44
import 'cloudinary_context.dart';
55

6-
class CldImageWidget extends StatefulWidget {
7-
late final CldImage image;
6+
class CldImageWidget extends Image {
7+
late final CldImage cldImage;
8+
89
CldImageWidget(
910
{required String publicId,
1011
super.key,
@@ -13,25 +14,63 @@ class CldImageWidget extends StatefulWidget {
1314
String? urlSuffix,
1415
String? assetType,
1516
String? deliveryType,
16-
Transformation? transformation}) {
17-
image = CloudinaryContext.cloudinary.image(publicId);
18-
((version != null) ? image.version(version) : null);
19-
((extension != null) ? image.extension(extension) : null);
20-
((urlSuffix != null) ? image.urlSuffix(urlSuffix) : null);
21-
((assetType != null) ? image.assetType(assetType) : null);
22-
((deliveryType != null) ? image.deliveryType(deliveryType) : null);
23-
((transformation != null) ? image.transformation(transformation) : null);
17+
Transformation? transformation,
18+
ImageFrameBuilder? frameBuilder,
19+
ImageLoadingBuilder? loadingBuilder,
20+
ImageErrorWidgetBuilder? errorBuilder,
21+
String? semanticLabel,
22+
bool excludeFromSemantics = false,
23+
double? width,
24+
double? height,
25+
Color? color,
26+
Animation<double>? opacity,
27+
BlendMode? colorBlendMode,
28+
BoxFit? fit,
29+
AlignmentGeometry alignment = Alignment.center,
30+
ImageRepeat repeat = ImageRepeat.noRepeat,
31+
Rect? centerSlice,
32+
bool matchTextDirection = false,
33+
bool gaplessPlayback = false,
34+
bool isAntiAlias = false,
35+
FilterQuality filterQuality = FilterQuality.low})
36+
: super(
37+
image: NetworkImage(''),
38+
frameBuilder: frameBuilder,
39+
loadingBuilder: loadingBuilder,
40+
errorBuilder: errorBuilder,
41+
semanticLabel: semanticLabel,
42+
excludeFromSemantics: excludeFromSemantics,
43+
width: width,
44+
height: height,
45+
color: color,
46+
opacity: opacity,
47+
colorBlendMode: colorBlendMode,
48+
fit: fit,
49+
alignment: alignment,
50+
repeat: repeat,
51+
centerSlice: centerSlice,
52+
matchTextDirection: matchTextDirection,
53+
gaplessPlayback: gaplessPlayback,
54+
isAntiAlias: isAntiAlias,
55+
filterQuality: filterQuality) {
56+
cldImage = CloudinaryContext.cloudinary.image(publicId);
57+
((version != null) ? cldImage.version(version) : null);
58+
((extension != null) ? cldImage.extension(extension) : null);
59+
((urlSuffix != null) ? cldImage.urlSuffix(urlSuffix) : null);
60+
((assetType != null) ? cldImage.assetType(assetType) : null);
61+
((deliveryType != null) ? cldImage.deliveryType(deliveryType) : null);
62+
((transformation != null) ? cldImage.transformation(transformation) : null);
2463
}
2564

2665
@override
27-
State<StatefulWidget> createState() {
66+
State<Image> createState() {
2867
return _CldImageState();
2968
}
3069
}
3170

3271
class _CldImageState extends State<CldImageWidget> {
3372
@override
3473
Widget build(BuildContext context) {
35-
return Image.network(widget.image.toString());
74+
return Image.network(widget.cldImage.toString());
3675
}
3776
}

test/cld_image_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ void main() {
1313
CloudinaryContext.cloudinary.config.urlConfig.analytics = false;
1414
setUpAll(() => HttpOverrides.global = null);
1515
testWidgets('Test CldImageWidget has valid url', (widgetTester) async {
16-
var widget = CldImageWidget(publicId: 'dog');
16+
var widget = CldImageWidget(publicId: 'dog', width: 500, height: 100);
1717
await widgetTester.pumpWidget(widget);
1818

1919
final imageFinder = find.image(

0 commit comments

Comments
 (0)