首页 > 解决方案 > 如何在flutter中向webview添加刷新指示器?

问题描述

我在我的应用程序中使用官方 webview 包来显示 webview,但问题是我无法使用刷新指示器小部件,我查找了许多解决方案,甚至在 github 上打开了问题,但我没有得到任何结果

如果有人告诉我如何在 webview 小部件上方添加可滚动小部件而不影响 webview 滚动,我将非常感激。

感谢您的时间。

标签: flutterlistviewdartwebview

解决方案


以下代码将帮助您在 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,
          ),
        ),
      ),
    );

推荐阅读