ios - Flutter webview 与 Angular 的双向通信
问题描述
我有 webview 的问题。我被从 js 通信到颤动但是。我在IOS模拟器上有这个问题。
怎么办:我想在flutter上点击btn,在js func上处理。
我的颤振代码:
late WebViewController _controller;
.....
onWebViewCreated: (WebViewController controller) =>
{_controller = controller},
...
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.arrow_upward),
onPressed: () {
_controller.evaluateJavascript('fromFlutter("From Flutter")');
},
),
在 Js 方面,我有简单的 Angular 应用程序,带有经典的 AppComponent:
import { Component } from '@angular/core';
declare const window: any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'testWebViewHandlers';
constructor() {}
fromFlutter(newTitle: any) {
this.title = newTitle;
}
}
当我点击颤动 btn 我有这个错误
[VERBOSE-2:ui_dart_state.cc(209)] 未处理的异常:PlatformException(evaluateJavaScript_failed,评估 JavaScript 失败,JavaScript 字符串为:'fromFlutter("From Flutter")' 错误域 = WKErrorDomain Code=4 "发生 JavaScript 异常" UserInfo ={WKJavaScriptExceptionLineNumber=0, WKJavaScriptExceptionMessage=TypeError: undefined is not a function, WKJavaScriptExceptionColumnNumber=0, NSLocalizedDescription=A JavaScript exception occurred}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607: 7)#1 MethodChannel._invokeMethod(包:flutter/src/services/platform_channel.dart:156:18)
我已经在使用 JavascriptChannel 来处理点击表单 js 来颤动并且它的工作正常。
谢谢帮助
解决方案 :
要获取窗口对象中组件的上下文,您可以将其添加为此。在 Angular 构造函数或初始化中:
窗口['AppComponent'] = 这个; (“AppComponent”或任何其他)
然后你可以在控制台中访问评估JavaScript。
在颤振中:
webView.evaluateJavascript(source: "window.AppComponent.fromFlutter('test')");
解决方案
推荐阅读
- php - 如何在 PHP 中解密由 SQL Server 的 EncryptByPassPhrase() 加密的字符串?
- winapi - 使用 IMetaDataEmit::Save(/ToMemory/ToStream) 创建 PE 文件
- dialogflow-es - 仅当用户来自 Google 审核团队时接收错误的 Contextname(使我的应用程序崩溃)
- azure - 有没有办法将 IIS 日志从 Log Analytics 工作区馈送到 App Insights?
- javascript - Window.locatin 防止数据被删除
- c# - 如何从 GridFS 检索图像列表?
- c# - 如何在 kubernetes 客户端中使用 Watcher?
- typescript - 根据 ID 显示其他 JSON 对象
- html - 背景图像在缩放时覆盖标题
- ios - 在苹果钱包中添加多重通行证