Estoy usando webview_flutter_plus con flutter y usando archivos locales de la carpeta de activos. La página se está cargando bien, pero a veces (de vez en cuando), sigo recibiendo el siguiente error en la consola a pesar de que tengo configurada la función setUserData() en el archivo js. Sorprendentemente, a veces funciona e imprime a través del archivo js.
I/cromo (7190): [INFO: CONSOLA (1)] "Error de referencia no detectado: setUserData no está definido", fuente: http://localhost:42369/assets/html/home.html (1)
Función en el archivo js:
function setUserData(json) { console.log(json); }Primero cargo datos de SQFLite y los muestro en la página web. Después de eso, si el dispositivo está en línea, la aplicación descarga datos del servidor en línea y actualiza SQFLite. A continuación se muestra el archivo dart:
late WebViewPlusController _webViewPlusController; Timer? timer; bool _webViewInitialized = false; void _checkIfWebViewInitialized(){ timer = Timer.periodic(const Duration(seconds: 1), (Timer t) { if(_webViewInitialized){ timer?.cancel(); _getSqliteDetails(); } }); } Future<void> _getSqliteDetails() async { final userDetails = Map.of(await UserProfileCrud.getUserDetailsByDisplayId(1917)); if(userDetails.isNotEmpty) { userDetails['status'] = 'Success'; final encodedUserData = convert.jsonEncode(userDetails); _webViewPlusController.webViewController.runJavascript("setUserData('$encodedUserData')"); } // Check Online Server Data } @override Widget build(BuildContext context) { return Scaffold( body: WebViewPlus( javascriptMode: JavascriptMode.unrestricted, initialUrl: 'assets/html/home.html', onWebViewCreated: (controller){ _webViewPlusController = controller; //CookieManager().clearCookies(); setState((){ _webViewInitialized = true; }); }, ), ); }¿Hay alguna otra forma de hacerlo que desconozco? Amablemente ayuda como nuevo a aleteo.
Gracias por adelantado.