我构建了一个WebView应用程序,我想要下拉屏幕来刷新网页。我使用flutter_inappwebview作为webview。我尝试在SingleChildScrollView或ListView中包装WebView,但它们都不起作用。在下面的代码中,当滑动功能工作时,WebView是不可滚动的。
我已经寻找了一段时间的解决方案,但我没有找到它。任何帮助都将不胜感激!
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () => _onBackPressed(),
child: Scaffold(
body: SafeArea(
child: RefreshIndicator(
onRefresh: () async {
print("##Refresh");
webview.reload();
},
child: SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: Container(
height: MediaQuery.of(context).size.height,
child: Center(
child: Stack(
children: <Widget>[
InAppWebView(
gestureRecognizers: Set()
..add(
Factory<VerticalDragGestureRecognizer>(
() => VerticalDragGestureRecognizer(),
),
),
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
debuggingEnabled: true,
userAgent: 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Mobile Safari/537.36',
),
),
onWebViewCreated: (InAppWebViewController controller) {
webview = controller;
controller.loadUrl(url: startURL);
},
onLoadStart: (InAppWebViewController controller, String url) async {
print("##onloadstart: " + url);
},
onLoadStop: (InAppWebViewController controller, String url) async {
print("##onloadstop: $url");
},
onProgressChanged: (InAppWebViewController controller, int progress) {
setState(() {
this.progress = progress / 100;
});
}
),
Align(
alignment: Alignment.center,
child: buildProgressBar(progress),
),
],
),
),
),
),
),
),
),
);
}
发布于 2020-09-23 18:14:33
如果你使用pull_to_refresh包,它实际上是非常简单的。您所要做的就是查看他们演示代码的底部,并将listview构建器替换为您的inappwebview scaffold。
child: ListView.builder(), -> child: Scaffold(),
别忘了添加你的webView.reload();用于拉取。
Package @ https://pub.dev/packages/pull_to_refresh
#编辑很抱歉,我不知道问题出在网页视图中的滚动。我复制了这个问题,然后,因为我有一个tabview控制器,所以我使用
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>[
new Factory<OneSequenceGestureRecognizer>(
() => new EagerGestureRecognizer(),
),
].toSet(),
这解决了问题,如果不是这样,那么这是由于使用了扩展的子项。
https://stackoverflow.com/questions/63376374
复制相似问题