1、创建一个结构体作为要共享的值
struct RefreshData {
var thresold: CGFloat = 0
var progress: Double = 0
var refreshState: RefreshState = .invalid
}
2、把他作为 Environment 的一个键 (EnvironmentKey),这样用到这个 key 就可以获取它的默认值。
struct HeaderRefreshDataKey :EnvironmentKey {
static var defaultValue: RefreshData = .init()
}
3、如果要改变或者修饰这个值,我们要扩写 EnvironmentValues,实现set,get方法
extension EnvironmentValues {
var headerRefreshData: RefreshData {
get {self[HeaderRefreshDataKey.self]}
set{
self[HeaderRefreshDataKey.self] = newValue
}
}
}
4、就这样,headerRefreshData 变成了 Environment 的 key,我们可以通过声明 @Environment(\.
headerRefreshData) var
headerRefreshData:
RefreshData 来获取它的值,通过在 View 中 .environment(\.
headerRefreshData, Setting(name: "..."))
来修改它。