Как взаимодействовать между JS и Flutter WebView?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как взаимодействовать между JS и Flutter WebView?

Сообщение Anonymous »

Я интегрирую веб-просмотр в свое приложение Flutter.
Вот соответствующий код:

Код: Выделить всё

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

class _WebViewStackState extends State {
var loaded = false;
late WebViewController _webViewController;

@override
void initState() {
super.initState();

_webViewController = WebViewController()
..loadRequest(Uri.parse(widget.url))
..setNavigationDelegate(
NavigationDelegate(
onPageStarted: (url) {},
onProgress: (progress) {},
onPageFinished: (url) {
setState(() {
loaded = true;
});
},
onNavigationRequest: (navigation) {
final host = Uri.parse(navigation.url).host;
print(host);
return NavigationDecision.navigate;
},
),
)
..setJavaScriptMode(JavaScriptMode.unrestricted)
..addJavaScriptChannel(
'callNativeMethod',
onMessageReceived: (message) {
print(message.message);
},
)
..addJavaScriptChannel('callAnalysisEvents',
onMessageReceived: (message) {
print(message.message);
});
}

@override
Widget build(BuildContext context) {
print(widget.url);

return
SafeArea(
child: WebViewWidget(
controller: _webViewController,
));
}
}
Это логика со стороны флаттера. А вот код со стороны js:
iOS:

Код: Выделить всё

messageHandlers.callNativeMethod.postMessage
Android:

Код: Выделить всё

window.external. CallNativeMethod(JSON.stringify({type,data}))
Я могу получать сообщения со стороны js в iOS, но не могу в Android.
Это уже установлено в AndroidManifest.xml: Я также попробовал InAppWebView, но не получил никакого сообщения ни в iOS, ни в Android.
Изменить невозможно. со стороны js, потому что это от нашего клиента; надеюсь, что он работает нормально как на iOS, так и на Android. я что-то пропустил?
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/787 ... er-webview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»