@@ -142,21 +142,11 @@ class GradientLinear extends EngineGradient {
142142 jsColors[i] = colors[i].value;
143143 }
144144
145- js.JsArray <double > jsColorStops;
146- if (colorStops == null ) {
147- jsColorStops = js.JsArray <double >();
148- jsColorStops.length = 2 ;
149- jsColorStops[0 ] = 0 ;
150- jsColorStops[1 ] = 1 ;
151- } else {
152- jsColorStops = js.JsArray <double >.from (colorStops);
153- jsColorStops.length = colorStops.length;
154- }
155145 return canvasKit.callMethod ('MakeLinearGradientShader' , < dynamic > [
156146 makeSkPoint (from),
157147 makeSkPoint (to),
158148 jsColors,
159- jsColorStops ,
149+ makeSkiaColorStops (colorStops) ,
160150 tileMode.index,
161151 ]);
162152 }
@@ -178,13 +168,16 @@ class GradientRadial extends EngineGradient {
178168
179169 @override
180170 Object createPaintStyle (html.CanvasRenderingContext2D ctx) {
181- if (matrix4 != null && ! Matrix4 .fromFloat64List (matrix4).isIdentity ()) {
182- throw UnimplementedError (
183- 'matrix4 not supported in GradientRadial shader' );
184- }
185- if (tileMode != ui.TileMode .clamp) {
186- throw UnimplementedError (
187- 'TileMode not supported in GradientRadial shader' );
171+ if (! experimentalUseSkia) {
172+ // The DOM backend does not (yet) support all parameters.
173+ if (matrix4 != null && ! Matrix4 .fromFloat64List (matrix4).isIdentity ()) {
174+ throw UnimplementedError (
175+ 'matrix4 not supported in GradientRadial shader' );
176+ }
177+ if (tileMode != ui.TileMode .clamp) {
178+ throw UnimplementedError (
179+ 'TileMode not supported in GradientRadial shader' );
180+ }
188181 }
189182 final html.CanvasGradient gradient = ctx.createRadialGradient (
190183 center.dx, center.dy, 0 , center.dx, center.dy, radius);
@@ -203,7 +196,23 @@ class GradientRadial extends EngineGradient {
203196
204197 @override
205198 js.JsObject createSkiaShader () {
206- throw UnimplementedError ();
199+ assert (experimentalUseSkia);
200+
201+ final js.JsArray <num > jsColors = js.JsArray <num >();
202+ jsColors.length = colors.length;
203+ for (int i = 0 ; i < colors.length; i++ ) {
204+ jsColors[i] = colors[i].value;
205+ }
206+
207+ return canvasKit.callMethod ('MakeRadialGradientShader' , < dynamic > [
208+ makeSkPoint (center),
209+ radius,
210+ jsColors,
211+ makeSkiaColorStops (colorStops),
212+ tileMode.index,
213+ matrix4 != null ? makeSkMatrix (matrix4) : null ,
214+ 0 ,
215+ ]);
207216 }
208217}
209218
0 commit comments