【发布时间】:2021-12-18 12:24:02
【问题描述】:
我有一个请求,要制作一张卡片,其中包含一个网页视图和更多小部件。视图应该类似于this。
我做了这样的实现:
SingleChildScrollView(
...
child: Column(
children: [
Container(
...
child: Column(
children: [
SizedBox(
height: _webviewHeightSetInOnLoadStop
child: InAppWebview(
...
)
),
...
)
),
Widget1(),
Widget2(),
Widget3(),
]
_webviewHeightSetInOnLoadStop 设置如下:
onLoadStop: (controller, url) async {
final height = await controller.evaluateJavascript(
source: "document.documentElement.scrollHeight;",
);
...
setState(() {
_webviewHeightSetInOnLoadStop = height;
...
});
}
这个实现的问题是,当 webview 太大时,Android 会崩溃:
IllegalStateException: Unable to create a layer for InAppWebView, size 960x39192 exceeds max size 16384
据我了解,这是由于 webview 的高度而引发的,这是系统限制的。
所以我想要一种 webview 可滚动的行为,它的容器有一个比屏幕大一点的固定高度(需要时),并且当在任一方向上到达 webview 的滚动结束时,拖动事件被传递给SingleChildScrollView。
【问题讨论】:
-
可以添加_webviewHeightSetInOnLoadStop值吗
-
@SalihCan 添加了设置_webviewHeightSetInOnLoadStop的onLoadStop方法。
-
是_webviewHeightSetInOnLoadStop给你39192吗?
标签: flutter flutter-layout flutter-inappwebview