【问题标题】:tapgesturerecognizer not working in flutter webviewTapgesturerecognizer 在颤振 webview 中不起作用
【发布时间】:2020-03-07 17:33:40
【问题描述】:

我尝试在颤动的 webview 中使用 GestureRecognizer 来缩小双捏。但它不起作用。如果您有任何解决方案,请帮助我

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';

void main()=>runApp(WebView());

class WebView extends StatefulWidget {
  @override
  _WebViewState createState() => _WebViewState();
}

class _WebViewState extends State<WebView> {
  final Completer<WebViewController> _controller =
      Completer<WebViewController>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(


      body: Builder(builder: (BuildContext context) {
        return WebView(
          key: UniqueKey(),
          gestureRecognizers:
          Set()..add(Factory<TapGestureRecognizer>(() => TapGestureRecognizer(),)),//ZOOM WEBVIEW

          initialUrl:
              'https://stackoverflow.com/questions/',

          javascriptMode: JavascriptMode.unrestricted,
          onWebViewCreated: (WebViewController webViewController) {
            _controller.complete(webViewController);
          },
        );
      }),

    );
  }
}

这是代码的重要部分如果您需要完整的代码,请评论。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    我遇到了同样的问题,并且能够通过将 WebView 包装到 GestureDetector 中并在其中包含 onTap() 来使 TapGestureRecognizer 工作。除了我不知道它为什么起作用。

    @override
     Widget build(BuildContext context) {
    return Scaffold(
      body: GestureDetector(
        onTap: () {
          print("This one doesn't print");
        },
        child: Container(
          child: Stack(
            children: <Widget>[
              WebView(
                initialUrl:
                    'example.com',
                javascriptMode: JavascriptMode.unrestricted,
                onWebViewCreated: (WebViewController webViewController) {
                  _controller.complete(webViewController);
                },
                gestureRecognizers: Set()
                  ..add(
                      Factory<TapGestureRecognizer>(() => TapGestureRecognizer()
                        ..onTapDown = (tap) {
                          print("This one prints");
                        })),
              ),
            ],
          ),
        ),
      ),
    );
    }
    

    想知道是否有人遇到类似问题并使其正常工作。

    【讨论】:

    • 也许这是使用 webviews 的正确方法,但还有另一个问题,onTapDown 工作正常,但 onTap 不工作,你知道吗?
    【解决方案2】:

    在没有合适的方法之前,我已经按照我的情况进行了如下操作

    Container(
        child: Stack(
          children: <Widget>[
            WebView(
              initialUrl:
                  'example.com',
              javascriptMode: JavascriptMode.unrestricted,
              onWebViewCreated: (WebViewController webViewController) {
                _controller.complete(webViewController);
              },
              gestureRecognizers: Set()
                ..add(
                    Factory<TapGestureRecognizer>(() => TapGestureRecognizer()
                      ..onTapDown = (tap) {
                        print("This one prints");
                      })),
            ),
            GestureDetector(
                  onTap: () {
                    print("ontap");
                  },
                  child: Container(
                      color: Colors.transparent,
                      width: double.infinity,
                      height: 50,
                  ),
                )
          ],
        ),
      ),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2018-11-17
      • 2021-02-20
      • 2021-04-04
      • 1970-01-01
      相关资源
      最近更新 更多