在列表中使用子项的文件树,如何保持文件树的形状?

File Tree using children in List, how do I keep the File Tree shape?

List(
    [root],
    children: \.children)
) { item in
    
}

结构同上

我想向用户显示文件,因为它们是通过在文件树中搜索自动打开的。有办法吗?

查看

struct ContentView: View {

    @StateObject var disk = Disk()

    var body: some View {
        List(disk.items, children: \.children) { item in
            Label() {
                Text(item.name)
            } icon: {
                Image(systemName: "folder")
            }
        }
    }
}

型号

class Disk: ObservableObject {
    @Published var items: [Item]

    init() {
        let item1 = Item(id: 1, name: "child 1", children: nil)
        let item2 = Item(id: 2, name: "child 2", children: nil)
        let item3 = Item(id: 3, name: "child 3", children: nil)
        let item4 = Item(id: 4, name: "child 4", children: [item1, item2, item3])
        let item5 = Item(id: 5, name: "child 5", children: nil)
        let item6 = Item(id: 6, name: "child 6", children: nil)
        let root = Item(id: 7, name: "Parent", children: [item4, item5, item6])
        items = [root]
    }
}

struct Item: Identifiable {
    var id: Int
    var name: String
    var children: [Item]?
}