如何以编程方式退出 WebView 中的全屏?
How to programmatically exit from full screen in WebView?
我的 Widget 树看起来像这样,
Widget build(context) {
return Consumer<SocketModel>(
builder: (ctx, model, snapshot) {
if(model.forceLeave == true) {
return Text("Your time is up")
}
return WebViewWithAHtmlPlayer()
}
)
}
上面的代码不是真正的代码,但为了清楚起见,我删除了大部分部分。这就是基本上发生的事情。 webview 中的 html 播放器可以播放视频。我有一个跟踪时间的套接字连接,超时后 forceLeave
变为真,这导致 运行 if
条件。
当我不让 html 视频播放器全屏显示时,这会起作用。但是如果 forceLeave
变为真,而我在 html 播放器上全屏显示,屏幕就会变成空白,背景为白色。由于我禁用了后退按钮,我的应用程序就像冻结一样(但实际上并没有。)
如何退出全屏视图?
我试过了,
SystemChrome.restoreSystemUIOverlays()
在处理 WebView
包装器小部件中。但它仍然没有退出全屏视图。
如何在上述受控结构中正确退出当前全屏视图?例如,有什么办法可以做类似的事情,
builder: (ctx, model, snapshot) {
if(model.forceLeave == true) {
exitFullScreen() // <-- Do something like this ?
return Text("Your time is up")
}
return WebViewWithAHtmlPlayer()
}
我没有找到从 Flutter 代码退出全屏的方法。所以我做了这样的事情。在我设置超时方法的地方,
Future.delayed(
Duration(seconds: timeLeft
),
() {
// Here I force the webview to exit from full screen before I disconnect
controller.evaluateJavascript(source: "document.exitFullscreen()");
Future.delayed(Duration(milliseconds: 100), () {
socketDao.socket.disconnect(); // this cause to `forceLeave` becomes true
});
},
);
import "dart:html"
document.exitFullscreen();
就是这样:)
我的 Widget 树看起来像这样,
Widget build(context) {
return Consumer<SocketModel>(
builder: (ctx, model, snapshot) {
if(model.forceLeave == true) {
return Text("Your time is up")
}
return WebViewWithAHtmlPlayer()
}
)
}
上面的代码不是真正的代码,但为了清楚起见,我删除了大部分部分。这就是基本上发生的事情。 webview 中的 html 播放器可以播放视频。我有一个跟踪时间的套接字连接,超时后 forceLeave
变为真,这导致 运行 if
条件。
当我不让 html 视频播放器全屏显示时,这会起作用。但是如果 forceLeave
变为真,而我在 html 播放器上全屏显示,屏幕就会变成空白,背景为白色。由于我禁用了后退按钮,我的应用程序就像冻结一样(但实际上并没有。)
如何退出全屏视图?
我试过了,
SystemChrome.restoreSystemUIOverlays()
在处理 WebView
包装器小部件中。但它仍然没有退出全屏视图。
如何在上述受控结构中正确退出当前全屏视图?例如,有什么办法可以做类似的事情,
builder: (ctx, model, snapshot) {
if(model.forceLeave == true) {
exitFullScreen() // <-- Do something like this ?
return Text("Your time is up")
}
return WebViewWithAHtmlPlayer()
}
我没有找到从 Flutter 代码退出全屏的方法。所以我做了这样的事情。在我设置超时方法的地方,
Future.delayed(
Duration(seconds: timeLeft
),
() {
// Here I force the webview to exit from full screen before I disconnect
controller.evaluateJavascript(source: "document.exitFullscreen()");
Future.delayed(Duration(milliseconds: 100), () {
socketDao.socket.disconnect(); // this cause to `forceLeave` becomes true
});
},
);
import "dart:html"
document.exitFullscreen();
就是这样:)