使用 transformEnvironment
可透過 closure 的方式,設定我們的 EnvironmentValue。
SwiftUI
概覽:設定 EnvironmentValue 環境變數
以 SwiftUI 開發 App 時,如果要設定環境變數,我們通常會使用 .environment modifier,但這個 modifier 有個缺點,是我們必須直接告訴它我們要設定的值,而有時候我們想設定的 EnvironmentValue 卻又不是固定的,簡單一點可能可以透過三元表示式「判斷?值:值」,或複雜一點就要先透過 func 算好,再傳給 .environment modifier,這樣的動態設定 EnvironmentValue 寫起來就會有點複雜。
transformEnvironment 概覽
除了用 .environment modifier 設定環境變數,我們還有另外一種方法「transformEnvironment
」,它厲害的地方在於,它不是吃一個要設定的值,而是吃一個 function,這代表我們可以把動態判斷要設定什麼 EnvironmentValue 的運算,直接寫在設定環境變數的 modifier 裡!這讓我們的程式更好追蹤。
透過 Func 轉換 EnvironmentValue
transformEnvironment 的用法很簡單,會像這樣:
@main
struct Example: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.transformEnvironment(\.colorScheme) { colorScheme in
if ... {
...
colorScheme = .light
} else {
...
colorScheme = .dark
}
}
}
}
這裡例子,會先有個判斷,再執行對應的事,然後才是設定我們要的日夜間模式。
關於 XcodeProject
XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。