Creé un javascript simple que envía una respuesta a través de console.log(); y tengo un Flutter WebView que carga la URL y en mi consola Flutter Android Studio obtengo esta respuesta como I/chromium(27778): [INFO:CONSOLE(20)] "My name", source: https://response_test.php pero estoy buscando una manera de recibir esta respuesta en mi aplicación flutter para poder usar la respuesta para navegar al usuario a otra página. Mi código se ve a continuación:
Mi código javascript:
<?php $MyPHPStringVar = "My name"; ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title></title> <script type="text/javascript"> var MyJSStringVar = "<?php Print($MyPHPStringVar); ?>"; console.log(MyJSStringVar); </script> </head> <body> </body> </body> </html>Y mi webview flutter es así:
WebView( javascriptMode:JavascriptMode.unrestricted, initialUrl: "https://hobber.ae/api/webview_response_test.php", onWebViewCreated: (WebViewController webViewController) { _controller.complete(webViewController); }, ),Quiero una forma de recibir mi respuesta dentro de mi actividad para poder hacer uso de los datos recibidos.
Después de verificar diferentes opciones para lograr esto, pude encontrar una solución que usa Print.postMessage en lugar de usar console.log() y mi código javascript se ve a continuación:
<script type='text/javascript'> Print.postMessage('<?php Print($MyPHPStringVar); ?>'); </script> Y en mi vista web de aleteo obtuve el valor en onMessageReceived: y mi código de aleteo final es el siguiente:
Stack(children: [ javascriptChannels:Set.from([ JavascriptChannel( name: 'Print', onMessageReceived: (JavascriptMessage message) { print(message.message); }) ]),