Flutter Web JS и Main App CommunicationJavascript

Форум по Javascript
Ответить
Anonymous
 Flutter Web JS и Main App Communication

Сообщение Anonymous »

У меня есть проблема с связи между приложением Flutter и InappwebView (для iOS/Android это работает). Когда я создаю его как веб -сайт, это не работает. Любые предложения, что я сделал неправильно или как я могу получить это, работает? Заранее спасибо.import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';

Future main() async {
WidgetsFlutterBinding.ensureInitialized();

runApp(const MaterialApp(home: MyApp()));
}

class MyApp extends StatefulWidget {
const MyApp({super.key});

@override
State createState() => _MyAppState();
}

var js = "console.log('Hello from JavaScript!');";
var js2 = "changeBackgroundColor();";

class _MyAppState extends State {
final GlobalKey webViewKey = GlobalKey();

InAppWebViewController? webViewController;
InAppWebViewSettings settings = InAppWebViewSettings(
isInspectable: true,
mediaPlaybackRequiresUserGesture: false,
allowsInlineMediaPlayback: true,
iframeAllow: "camera; microphone",
iframeAllowFullscreen: true);

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

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Official InAppWebView website")),
body: SafeArea(
child: Column(children: [
SizedBox(
height: 100,
),
Expanded(
child: Stack(
children: [
InAppWebView(
key: webViewKey,
initialUrlRequest: URLRequest(
url: WebUri("https://jspagesample.web.app"),
),
initialSettings: settings,
onWebViewCreated: (controller) {
webViewController = controller;
debugPrint("onWebViewCreated");
},
onLoadStart: (controller, url) {
debugPrint("onLoadStart");
},
onPermissionRequest: (controller, request) async {
return PermissionResponse(
resources: request.resources,
action: PermissionResponseAction.GRANT);
},
onLoadStop: (controller, url) async {
debugPrint("onLoadStop");
},
onReceivedError: (controller, request, error) {},
onConsoleMessage: (controller, consoleMessage) {
debugPrint(consoleMessage.message);
},
),
],
),
),
ButtonBar(
alignment: MainAxisAlignment.center,
children: [
ElevatedButton(
child: Text("Run JS 1"),
onPressed: () async {
debugPrint("JS Result: Before");
if (webViewController == null) {
debugPrint("webViewController is null");
return;
}
await webViewController!.evaluateJavascript(source: js);
debugPrint("JS Result: After");
},
),
ElevatedButton(
child: Text("Run JS 2"),
onPressed: () async {
debugPrint("JS 2 Result: Before");
await webViewController!
.evaluateJavascript(source: js2)
.then((value) {
debugPrint("JS Result: $value");
});
debugPrint("JS 2 Result: After");
},
),
],
),
])));
}
}



Подробнее здесь: https://stackoverflow.com/questions/795 ... munication
Ответить

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

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

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

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

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