【问题标题】:How to add a refresh indicator to a webview in flutter?如何在flutter中向webview添加刷新指示器?
【发布时间】:2026-01-21 16:50:01
【问题描述】:
我在我的应用程序中使用官方 webview 包来显示 webview,但问题是我无法使用刷新指示器小部件,我查找了许多解决方案,甚至在 github 上打开了问题但我没有得到任何结果
如果有人告诉我如何在 webview 小部件上方添加可滚动小部件而不影响 webview 滚动,我将非常感激。
感谢您的宝贵时间。
【问题讨论】:
标签:
flutter
listview
dart
webview
【解决方案1】:
以下代码将帮助您在 Webview 的上方显示 RefreshIndicator。如果以下代码与您的用例匹配,则可以使用它们。 ;)
return RefreshIndicator(
onRefresh: () async => Future.delayed(Duration(seconds: 3)),
child: SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
scrollDirection: Axis.vertical,
child: Container(
height: viewHeight, // MediaQuery.of(context).size.height.
width: viewWidth, // MediaQuery.of(context).size.width.
child: WebView(
initialUrl: 'https://www.google.co.in/?gws_rd=ssl',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
javascriptChannels: <JavascriptChannel>[
_toasterJavascriptChannel(context),
].toSet(),
navigationDelegate: (NavigationRequest request) {
if (request.url.startsWith('https://www.youtube.com/')) {
print('blocking navigation to $request}');
return NavigationDecision.prevent;
}
print('allowing navigation to $request');
return NavigationDecision.navigate;
},
onPageStarted: (String url) {
print('Page started loading: $url');
},
onPageFinished: (String url) {
print('Page finished loading: $url');
},
gestureNavigationEnabled: true,
),
),
),
);