是否可以在SwiftUI中的环境中使用@AppStorage,如果可以,您将如何操作?
我知道您可以使用@Bindings将@AppStorage的值从一个视图发送到另一个视图,我想知道是否可以将其放入环境中。我没有一个实际的例子来说明这在什么时候适用,但我想知道它是否可能。
这会疯狂到可以工作吗?我认为您将只存储值,而不会将其存储在UserDefault中。
struct RootView: View {
@AppStorage("userPreferredDisplayMode") private var userPreferredDisplayMode: String = "automatic"
@Environment(\.userPreferredDisplayMode) private var envUserPreferredDisplayMode: String
var body: some View {
Text(title)
.environment(\.userPreferredDisplayMode, envUserPreferredDisplayMode)
}
}发布于 2020-10-08 08:30:58
事实证明你可以。
struct CustomTextKey: EnvironmentKey {
static var defaultValue: Binding<String> = Binding.constant("Default Text")
}
extension EnvironmentValues {
var customText: Binding<String> {
get { self[CustomTextKey.self] }
set { self[CustomTextKey.self] = newValue }
}
}
struct ContentView: View {
@AppStorage("text") private var text: String = ""
var body: some View {
TextEditor(text: $text).padding()
Divider()
SecondView()
.environment(\.customText, $text)
}
}
struct SecondView: View {
var body: some View {
ThirdView()
}
}
struct ThirdView: View {
@Environment(\.customText) private var text: Binding<String>
var body: some View {
TextEditor(text: text).padding()
}
}https://stackoverflow.com/questions/64252567
复制相似问题