在 VStack 中包装 WebView 时出错:无法推断复杂的闭包返回类型;添加显式类型以消除歧义
Posted
技术标签:
【中文标题】在 VStack 中包装 WebView 时出错:无法推断复杂的闭包返回类型;添加显式类型以消除歧义【英文标题】:Error wrapping WebView within VStack: Unable to infer complex closure return type; add explicit type to disambiguate 【发布时间】:2020-06-02 00:15:16 【问题描述】:我试图将我的自定义结构 WebView 包装在 VStack 中,但出现此错误:
无法推断复杂的闭包返回类型;添加显式类型以消除歧义
WebView 就是这样一个结构体:
struct WebView: UIViewRepresentable
var request: URLRequest
func makeUIView(context: Context) -> WKWebView
return WKWebView()
func updateUIView(_ uiView: WKWebView, context: Context)
uiView.load(request)
这是我的 ContentView 的一部分:
ZStack
ScrollView
VStack(spacing:0)
ZStack
ZStack (alignment: .leading)....offset(y: self.expandedScreen_shown ? 0 : 0)
.clipped()
.background(Color.white)
.foregroundColor(Color.green)
.edgesIgnoringSafeArea(.top)
VStack (alignment: .leading)....frame(height: self.maxHeight)
.zIndex(1)
WebView(request: URLRequest(url: URL(String: "google.com")))
Rectangle()
.fill(Color.white)
.frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
.frame(width: self.expandedScreen_startPoint.width, height: self.expandedScreen_startPoint.height)
.background(Color.clear)
.cornerRadius(self.expandedScreen_shown ? 0 : 15 )
.animation(.easeInOut(duration: 0.3))
.offset(x: self.expandedScreen_startPoint.minX, y: self.expandedScreen_startPoint.minY)
// ScrollView ends
Button(action: ...)....offset(x: (UIScreen.main.bounds.width/2) - 30, y: (-1 * UIScreen.main.bounds.height/2) + 60)
// ZStack ends
正如我看到的项目成功地将这个 WebView 包装在 VStack 中一样,我找不到问题出在哪里。更笼统地说,“复杂闭包返回类型”和“显式类型”有什么区别?
提前致谢!
【问题讨论】:
【参考方案1】:我注意到关于您的 WebView 的两件事。
1) 字符串应该是字符串,并且
2) URL 应该被解包
试试这个:
WebView(request: URLRequest(url: URL(string: "https://google.com")!))
【讨论】:
谢谢!我遇到了一个新问题,即整个 WebView 没有显示出来。我应该用其他视图包装它吗? WebView 曾经在 NavigationView 内部工作,但本项目不需要它。目前,这整个 ZStack 是另一个 ZStack 的不可见部分,它会在点击手势后变得可见。 我的回答是否解决了您的错误?如果是,请将答案标记为正确。至于其他问题,如果没有所有信息,很难说,但通常您不必将 WebView 包装在另一个视图中以使其工作。我建议您将代码分解成小块,而不是全部放在同一个 ZStack 中。 如果网页未显示,请尝试使用 https:// 前缀以上是关于在 VStack 中包装 WebView 时出错:无法推断复杂的闭包返回类型;添加显式类型以消除歧义的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:在 Column 中包装 Layoutbuilder 和 Text 时出错