Add support for dynamic CSS #61
This commit is contained in:
parent
7eeec9e0fd
commit
a04bd9025d
@ -339,11 +339,15 @@ extension AnyView {
|
|||||||
/// - Parameter getString: Get the CSS.
|
/// - Parameter getString: Get the CSS.
|
||||||
/// - Returns: A view.
|
/// - Returns: A view.
|
||||||
public func css(_ getString: @escaping () -> String) -> AnyView {
|
public func css(_ getString: @escaping () -> String) -> AnyView {
|
||||||
inspectOnAppear { _ in
|
inspect { storage, updateProperties in
|
||||||
|
let cssID = "internal-css"
|
||||||
|
let previous = storage.fields[cssID] as? String
|
||||||
|
let string = getString()
|
||||||
|
if updateProperties, string != previous {
|
||||||
let provider = gtk_css_provider_new()
|
let provider = gtk_css_provider_new()
|
||||||
gtk_css_provider_load_from_string(
|
gtk_css_provider_load_from_string(
|
||||||
provider,
|
provider,
|
||||||
getString()
|
string
|
||||||
)
|
)
|
||||||
let display = gdk_display_get_default()
|
let display = gdk_display_get_default()
|
||||||
gtk_style_context_add_provider_for_display(
|
gtk_style_context_add_provider_for_display(
|
||||||
@ -354,5 +358,6 @@ extension AnyView {
|
|||||||
g_object_unref(provider)
|
g_object_unref(provider)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,8 @@ struct DiceDemo: View {
|
|||||||
.css {
|
.css {
|
||||||
"""
|
"""
|
||||||
.dice-button {
|
.dice-button {
|
||||||
background-color: @green_5;
|
background-color: \(number == nil ? "@blue_5" : "@green_5");
|
||||||
|
transition: 0.2s;
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user