首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在颤动中拉动以刷新WebView

在颤动中拉动以刷新WebView
EN

Stack Overflow用户
提问于 2020-08-12 20:17:43
回答 2查看 1.7K关注 0票数 2

我构建了一个WebView应用程序,我想要下拉屏幕来刷新网页。我使用flutter_inappwebview作为webview。我尝试在SingleChildScrollView或ListView中包装WebView,但它们都不起作用。在下面的代码中,当滑动功能工作时,WebView是不可滚动的。

我已经寻找了一段时间的解决方案,但我没有找到它。任何帮助都将不胜感激!

代码语言:javascript
运行
复制
@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),
                  ),
                ],
              ),
            ),
          ),
        ),
      ),
    ),
  ),
);
}
EN

Stack Overflow用户

发布于 2020-09-23 18:14:33

如果你使用pull_to_refresh包,它实际上是非常简单的。您所要做的就是查看他们演示代码的底部,并将listview构建器替换为您的inappwebview scaffold。

代码语言:javascript
运行
复制
child: ListView.builder(), -> child:  Scaffold(),

别忘了添加你的webView.reload();用于拉取。

Package @ https://pub.dev/packages/pull_to_refresh

#编辑很抱歉,我不知道问题出在网页视图中的滚动。我复制了这个问题,然后,因为我有一个tabview控制器,所以我使用

代码语言:javascript
运行
复制
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>[
new Factory<OneSequenceGestureRecognizer>(
() => new EagerGestureRecognizer(),
),
].toSet(),

这解决了问题,如果不是这样,那么这是由于使用了扩展的子项。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63376374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档