Skip to content

Commit 2327423

Browse files
authored
Fix infinite recomposition in Text.foregroundStyle(LinearGradient()) (#438)
Fixes #437
1 parent 73ff642 commit 2327423

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

Sources/SkipUI/SkipUI/Graphics/Gradient.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,9 @@ public struct LinearGradient : ShapeStyle, Renderable {
141141

142142
@Composable override func asBrush(opacity: Double, animationContext: ComposeContext?) -> Brush? {
143143
let stops = gradient.colorStops(opacity: opacity)
144-
return LinearGradientShaderBrush(colorStops: stops, startPoint: startPoint, endPoint: endPoint)
144+
return remember(gradient, startPoint, endPoint, opacity) {
145+
LinearGradientShaderBrush(colorStops: stops, startPoint: startPoint, endPoint: endPoint)
146+
}
145147
}
146148

147149
private struct LinearGradientShaderBrush: ShaderBrush {
@@ -207,7 +209,9 @@ public struct EllipticalGradient : ShapeStyle, Renderable {
207209

208210
@Composable override func asBrush(opacity: Double, animationContext: ComposeContext?) -> Brush? {
209211
let stops = gradient.colorStops(opacity: opacity)
210-
return RadialGradientShaderBrush(colorStops: stops, center: center, startFraction: startFraction, endFraction: endFraction)
212+
return remember(gradient, center, startFraction, endFraction, opacity) {
213+
RadialGradientShaderBrush(colorStops: stops, center: center, startFraction: startFraction, endFraction: endFraction)
214+
}
211215
}
212216

213217
private struct RadialGradientShaderBrush: ShaderBrush {
@@ -275,7 +279,9 @@ public struct RadialGradient : ShapeStyle, Renderable {
275279
let start = with(density) { startRadius.dp.toPx() }
276280
let end = with(density) { endRadius.dp.toPx() }
277281
let stops = gradient.colorStops(opacity: opacity)
278-
return RadialGradientShaderBrush(colorStops: stops, center: center, startRadius: start, endRadius: end)
282+
return remember(gradient, center, start, end, opacity) {
283+
RadialGradientShaderBrush(colorStops: stops, center: center, startRadius: start, endRadius: end)
284+
}
279285
}
280286

281287
private struct RadialGradientShaderBrush: ShaderBrush {

0 commit comments

Comments
 (0)