【发布时间】:2021-09-06 12:38:09
【问题描述】:
我们开发了一个应用程序,我们需要在其中打开一个 WebView 来向用户显示一个文本编辑器。用户与编辑器交互后,我们需要从 URL 中获取一些数据。
为了展示 WebView,我们使用了 webview_flutter: ^2.0.8 包,问题是一些用户想要将他们的蓝牙键盘连接到他们的设备上,而 webview 部分无法识别 iOS 上的蓝牙键盘。
首先,我们认为这是由于蓝牙的某些权限,但显然情况并非如此,因为我们添加了这些权限并且没有任何改变,除此之外,文本字段和文本编辑器在其他部分完美运行在应用程序中,问题出在 iOS 上运行的 webview 上。
由于我们需要 URL 数据,我按照link 中描述的步骤进行操作。然后我以与example 类似的方式将 webview 作为模态打开,但无论如何它无法识别键盘。
接下来我尝试将 FlutterViewController 包装在 UINavigationController 中,以便导航到我创建的 WebViewController,但是当这行被执行时:
让控制器:FlutterViewController = window?.rootViewController 作为! FlutterViewController
触发了这个错误:
无法将“UINavigationController”(0x11732c8f0) 类型的值转换为“FlutterViewController”(0x111370520)。
我是 Swift/iOS 的新手,所以我不知道如何解决这个问题。
有没有办法实例化或获取FlutterViewController 的BinaryMessenger 来创建FlutterMethodChannel?
你知道以不同方式打开 web 视图的包吗?因为我也尝试过其他包,但显然它们都和 webview_flutter 做的一样,也就是说,他们使用UiKitView,这对我来说不适用于这个问题。
这里是一个 repo,我尝试解决这个问题:https://github.com/jorgesarabia/flutter_hc_webview_example
谢谢!
【问题讨论】: