在 flutter webview 中禁用水平滚动
Disable horizontal scrolling in flutter webview
我正在使用这个 flutter WebView
插件 https://pub.dartlang.org/packages/flutter_webview_plugin
该应用 运行 非常完美。但是,当网页加载时,某些网站上有水平滚动条,如果我水平滚动,网站上只有空白区域。我想禁用此水平滚动功能以保持用户体验正确。
Horizontal Scrolling in the screenshot
I want the webview look like this with horizontal scrolling disabled
测试代码如下:
webview.dart
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
class WebViewExample extends StatefulWidget {
@override
_WebViewExampleState createState() => _WebViewExampleState();
}
class _WebViewExampleState extends State<WebViewExample> {
FlutterWebviewPlugin flutterWebviewPlugin = FlutterWebviewPlugin();
var urlString = "https://www.prothomalo.com/bangladesh/article/1565521/%E0%A6%B6%E0%A6%A4%E0%A6%AD%E0%A6%BE%E0%A6%97-%E0%A6%B8%E0%A7%81%E0%A6%B7%E0%A7%8D%E0%A6%A0%E0%A7%81-%E0%A6%A8%E0%A6%BF%E0%A6%B0%E0%A7%8D%E0%A6%AC%E0%A6%BE%E0%A6%9A%E0%A6%A8-%E0%A6%B9%E0%A6%AC%E0%A7%87-%E0%A6%A8%E0%A6%BE-%E0%A6%95%E0%A6%AC%E0%A6%BF%E0%A6%A4%E0%A6%BE-%E0%A6%96%E0%A6%BE%E0%A6%A8%E0%A6%AE";
@override
void initState() {
super.initState();
flutterWebviewPlugin.onStateChanged.listen((WebViewStateChanged wvs) {
print(wvs.type);
});
}
@override
Widget build(BuildContext context) {
return WebviewScaffold(
appBar: AppBar(
title: new Text(
'WebView Test',
style: new TextStyle(
color: Colors.white,
),
),
),
url: urlString,
withZoom: false,
);
}
}
您可以在 https://pub.dev/packages/webview_flutter
使用 webview_flutter
不添加任何手势识别器。
例如,如果您有一个 ListView,并且在列表的每个项目中,您都有一个小的 windows 代表网络视图。不添加 gestureRecognizers 将不允许您在 webview 中滚动,但是如果您确实想在 listview 和 webview 中垂直滚动,您将需要 gestureRecognizers,
语法为:
WebView(
initialUrl: someUrl,
gestureRecognizers: Set()
..add(Factory<VerticalDragGestureRecognizer>(
() => VerticalDragGestureRecognizer())),
)
在我的例子中,将 WebView
包装在 GestureDetector
小部件中并覆盖 onHorizontalDragUpdate()
回调就足够了。
WebViewController _webViewController;
GestureDetector(
onHorizontalDragUpdate: (updateDetails) {},
child: WebView(
initialUrl: 'about:blank',
onWebViewCreated: (WebViewController webViewController) {
_webViewControllerHeader = webViewController;
},
),
)
要在 flutter webview 中禁用垂直滚动,您可以相应地覆盖 onVertivalDragUpdate()。
寻找更多信息here and 。
我正在使用这个 flutter WebView
插件 https://pub.dartlang.org/packages/flutter_webview_plugin
该应用 运行 非常完美。但是,当网页加载时,某些网站上有水平滚动条,如果我水平滚动,网站上只有空白区域。我想禁用此水平滚动功能以保持用户体验正确。
Horizontal Scrolling in the screenshot
I want the webview look like this with horizontal scrolling disabled
测试代码如下:
webview.dart
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
class WebViewExample extends StatefulWidget {
@override
_WebViewExampleState createState() => _WebViewExampleState();
}
class _WebViewExampleState extends State<WebViewExample> {
FlutterWebviewPlugin flutterWebviewPlugin = FlutterWebviewPlugin();
var urlString = "https://www.prothomalo.com/bangladesh/article/1565521/%E0%A6%B6%E0%A6%A4%E0%A6%AD%E0%A6%BE%E0%A6%97-%E0%A6%B8%E0%A7%81%E0%A6%B7%E0%A7%8D%E0%A6%A0%E0%A7%81-%E0%A6%A8%E0%A6%BF%E0%A6%B0%E0%A7%8D%E0%A6%AC%E0%A6%BE%E0%A6%9A%E0%A6%A8-%E0%A6%B9%E0%A6%AC%E0%A7%87-%E0%A6%A8%E0%A6%BE-%E0%A6%95%E0%A6%AC%E0%A6%BF%E0%A6%A4%E0%A6%BE-%E0%A6%96%E0%A6%BE%E0%A6%A8%E0%A6%AE";
@override
void initState() {
super.initState();
flutterWebviewPlugin.onStateChanged.listen((WebViewStateChanged wvs) {
print(wvs.type);
});
}
@override
Widget build(BuildContext context) {
return WebviewScaffold(
appBar: AppBar(
title: new Text(
'WebView Test',
style: new TextStyle(
color: Colors.white,
),
),
),
url: urlString,
withZoom: false,
);
}
}
您可以在 https://pub.dev/packages/webview_flutter
使用 webview_flutter不添加任何手势识别器。
例如,如果您有一个 ListView,并且在列表的每个项目中,您都有一个小的 windows 代表网络视图。不添加 gestureRecognizers 将不允许您在 webview 中滚动,但是如果您确实想在 listview 和 webview 中垂直滚动,您将需要 gestureRecognizers, 语法为:
WebView(
initialUrl: someUrl,
gestureRecognizers: Set()
..add(Factory<VerticalDragGestureRecognizer>(
() => VerticalDragGestureRecognizer())),
)
在我的例子中,将 WebView
包装在 GestureDetector
小部件中并覆盖 onHorizontalDragUpdate()
回调就足够了。
WebViewController _webViewController;
GestureDetector(
onHorizontalDragUpdate: (updateDetails) {},
child: WebView(
initialUrl: 'about:blank',
onWebViewCreated: (WebViewController webViewController) {
_webViewControllerHeader = webViewController;
},
),
)
要在 flutter webview 中禁用垂直滚动,您可以相应地覆盖 onVertivalDragUpdate()。
寻找更多信息here and