我有一个要求制作一张卡片,其中包含一个网页视图,然后是更多小部件。视图应该看起来像这样。
我做了这样的实现:
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
.