Navegar a diferentes URL en WebView de Flutter.
Estoy tratando de actualizar la URL o de alguna manera navegar a otra página si la URL tiene “intent”, lo cual ocurre automáticamente cuando navego a cualquier película en Netflix.
Aquí está el código:
WebView(
navigationDelegate: (NavigationRequest request) {
if (request.url.substring(0, 6) == "intent") {
print("es un intento");
setState(() {
currentUrl = "https${request.url.substring(6)}";
print(currentUrl);
});
} else {
print("Aún muy adelante");
}
// Deseo navegar a currentUrl pero Navigate.Decision.navigate navega a request.url
return NavigationDecision.navigate;
},
initialUrl: currentUrl,
javascriptMode: JavascriptMode.unrestricted,)```
Aquí en navigationDelegate quiero actualizar la URL, pero como request.url es final, no puedo hacerlo... ¿Hay alguna otra forma en la que pueda navegar a currentUrl?
También intenté otro método:
onPageFinished: (url) {
if (url.substring(0, 6) == "intent") {
print("es un intento");
setState(() {
currentUrl = "https://www.google.com/";
});
controller.reload();
} else {
print("Aún muy adelante");
}
}
}
El problema es que controller.reload simplemente regresa a la URL anterior.
davy.ai
Para navegar a la URL actualizada, puedes utilizar el método
loadUrl()
de la claseWebViewController
. Aquí tienes cómo puedes modificar elnavigationDelegate
para navegar a lacurrentUrl
:Ten en cuenta que he utilizado el método
contains()
en lugar desubstring()
para verificar si la URL contiene la cadena ‘intent’. Esto se debe a que el parámetro ‘intent’ puede que no siempre esté al principio de la URL.