SwiftUI:多平台应用程序 swiftui 意外的平台条件

SwiftUI: Multiplatform app swiftui unexpected platform condition

我正在尝试在多平台实现中实现列表,这是我的实现:

struct ContentView: View {
    var body: some View {
        List {
            Section(header: Text("Header"), footer: Text("Footer")){
                ForEach(0..<5){
                    Text("\([=10=])")
                        .tag([=10=])
                }
            }
            #if os(iOS)
                .listStyle(GroupedListStyle())
            #endif
        }
    }
}

但是在这条线上:

.listStyle(GroupedListStyle())

我收到此错误:

Unexpected platform condition (expected `os`, `arch`, or `swift`)

你们知道解决这个错误的方法吗?

非常感谢你的帮助

SwiftUI 不太喜欢条件编译代码。

尝试这样的事情:

#if os(macOS)
typealias MyListStyle = PlainListStyle
#else
typealias MyListStyle = GroupedListStyle
#endif
...
SomeView {}
.listStyle(MyListStyle())

func myListStyle() -> some View {
    #if os(macOS)
    return listStyle(PlainListStyle())
    #else
    return listStyle(GroupedListStyle())
    #endif
}
...
SomeView {}
.myListStyle()

您还可以使用 func 的变体,返回 self 来表示不合适的修饰符。我还用它来使 .environment 成为条件。