Open francescocervone opened 7 months ago
@francescocervone Yeah I can see this being useful. I worry that it might end up impacting the preview itself but maybe that's acceptable. Can you talk a bit more about your use case. What does the enclosing class look like in your case?
Yes, we have a class for the Typography that depends on the colors, but it might have a default value which is overridden when the theme is applied. Basically we have the colors:
interface Colors {
val content: Color
val background: Color
}
class LightColors: Colors {
@ShowkaseColor
override val content: Color = // something
@ShowkaseColor
override val background: Color = // something
}
class DarkColors: Colors {
@ShowkaseColor
override val content: Color = // something
@ShowkaseColor
override val background: Color = // something
}
Then we have the typography:
interface Typography {
val title: TextStyle
val body: TextStyle
}
class DefaultTypography(private val colors: Colors = LightColors): Typography {
// we'd like to have @ShowkaseTypography here but we can't
override val title: TextStyle = // something
// we'd like to have @ShowkaseTypography here but we can't
override val body: TextStyle = // something
}
Technically, Showkase would be able to instantiate DefaultTypography
because it has at least one empty constructor.
I see from the validator that the enclosing class must have exactly one constructor with no parameters here.
Couldn't this be relaxed to have at least one constructor with no parameters?
I mean, could that function be converted to something like this?