Ios SwiftUI-如何保留子视图';更新父视图时的状态';什么州?

Ios SwiftUI-如何保留子视图';更新父视图时的状态';什么州?,ios,swift,xcode,swiftui,avplayer,Ios,Swift,Xcode,Swiftui,Avplayer,我试图找到一种方法,在父视图更新时保留子视图。我有以下设置: struct VideoPlayerView: View { @State var fullScreen : Bool = false var body: some View { NavigationView { VStack { PlayerContainerView(url: URL(s

我试图找到一种方法,在父视图更新时保留子视图。我有以下设置:

struct VideoPlayerView: View {
       
    @State var fullScreen : Bool = false
    
    var body: some View {
        NavigationView {
            VStack {                
                PlayerContainerView(url: URL(string: "video-link-from-vimeo")!, fullScreen: $fullScreen)
                
                if !fullScreen {                    
                    VStack {
                        ...very long content here...
                    }                          
                }
            }
            .backgroundColor(self.fullScreen ? K.Colors.AppText : K.Colors.AppBackground)
            .hideNavigationBar()
        }
        .hideNavigationBar()
    }
}

PlayerContainerView只是我的包装,其中包含AVPlayer和一些自定义控件。为了在第一个位置显示玩家,如果相关的话,我使用了这个技术

我正在加载的视频来自Vimeo。正在从子视图更新fullScreen@State属性

想要的结果 我希望能够隐藏我的播放器下的所有内容,这样播放器就可以全屏显示。这可能在任何时候发生-即,当视频已经播放时,当视频在特定时间暂停时,等等

问题
问题是,如果我更新全屏@State属性,我会得到一个全新的视图,实际上,如果我在进入全屏之前播放视频,我会听到它仍在后台播放。我的全屏视频现在从头开始,而不是从进入全屏之前的位置恢复。

问题是在视图更新之间,
AVPlayer
的状态没有恢复。一种可能的解决方案是将
AVPlayer
作为参数提供给
PlayerContainerView
(而不是url)