es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flutter WebView Ubicación

Estoy creando un WebView de este sitio web https://nearxt.com/, el cual solicita la ubicación al abrirse, pero cuando uso este enlace para crear un webview en flutter, no puede obtener la ubicación. También he definido la ubicación en la aplicación, pero el webview no puede recibirla.

 SafeArea (
   child: WebView (
      javascriptMode: JavascriptMode.unrestricted,
      initialUrl: flutterUrl,
      onWebViewCreated: (WebViewController webViewController) {
        _controller = webViewController;
      },
   ),
),
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Cuando se crea un WebView en Flutter, dependiendo de la plataforma en la que se esté ejecutando la aplicación, el WebView puede no heredar los permisos de la aplicación padre. En este caso, como el sitio web “https://nearxt.com/” solicita permiso de ubicación, es necesario dar explícitamente permiso al WebView en la aplicación Flutter.

    Para dar permiso al WebView, es necesario agregar un controlador de solicitud de permisos al widget WebView. Aquí hay un ejemplo de cómo agregar un controlador de solicitud de permisos al widget WebView:

    SafeArea(
      child: WebView(
        initialUrl: 'https://nearxt.com/',
        javascriptMode: JavascriptMode.unrestricted,
        onWebViewCreated: (WebViewController webViewController) {
          _controller = webViewController;
          _controller?.loadUrl("https://nearxt.com/");
        },
        navigationDelegate: (NavigationRequest request) async {
          if (request.url.contains("https://nearxt.com/")) {
            await Future.delayed(Duration(seconds: 2));
            _controller?.evaluateJavascript("navigator.geolocation.getCurrentPosition(function(position) {console.log(position)});");
          }
    
          return NavigationDecision.navigate;
        },
      ),
    ),
    

    En el código anterior, hemos agregado un navigationDelegate a nuestro widget WebView. Este delegado se llama cada vez que hay una solicitud para navegar a una nueva URL en el WebView. En este delegado, verificamos si la URL solicitada es “https://nearxt.com/”. Si la URL coincide, esperamos 2 segundos para dar tiempo al WebView para cargar, y luego ejecutamos un código JavaScript que solicita la ubicación actual del usuario utilizando el método navigator.geolocation.getCurrentPosition.

    Al agregar este controlador de solicitud de permisos a su widget WebView, debería poder dar permiso al WebView para acceder a su ubicación.

Comments are closed.