dkn*_*ack 11 flutter flutter-layout flutter-inappwebview
我有一个示例代码,可以检测悬停在小部件上的手写笔。
代码来自这个 Stackoverflow Question。
简而言之。GestureBinding.instance?.pointerRouter.addGlobalRoute
如果事件属于手写笔类型,它会使用绑定并检查处理程序。当手写笔悬停在屏幕上(无接触)时会触发此操作。
它在诸如等小部件上效果很好Text()
。Container()
我想在不同的 Widget(Flutter)上使用此功能,InAppWebView
但直到笔与表面接触后才会触发该事件。即使在容器上它也不起作用,如果孩子是InAppWebView
.
我认为这个问题在其他 Widget 上也会出现。
我尝试了Listener
,AbsorbPointer
和IgnorePointer
.
当我开始将触控笔悬停在屏幕上时,我可以在调试输出中看到以下内容。
I/ViewRootImpl(23491): updatePointerIcon pointerType = 20001, calling pid = 23491
D/InputManager(23491): setPointerIconType iconId = 20001, callingPid = 23491
Run Code Online (Sandbox Code Playgroud)
InAppWebView 有一个useHybridComposition
默认false
选项。设置一下即可true
解决问题。但是 WebView 变得非常慢。
谢谢!
如下所述,这个问题有两种解决方案。
设置useHybridComposition
为真。对于缓慢的情况,也许可以向该存储库提出问题。
在 android/ios 级别而不是 Flutter 级别进行挂钩,并将事件转发回 Flutter。
调试方法可能是这样的:首先,打印出像你的_handleEvent
. 然后你就会知道指针事件是刚刚发生,还是根本没有发生。
其次,尝试哪些小部件可以,哪些不可以。文本可以,WebView 不行。那么Container可以吗?InkWell 还好吗?图标按钮可以吗?图标按钮可以吗?通过这样做,您可以深入了解文本的特殊之处,使其发挥作用。
第三,作为一个hacky解决方法,你能尝试一下吗Text.rich(WidgetSpan(child: your_web_view))
?既然你说文本可以,而其他小部件则不行。
最后,也许需要深入研究 Text 的源代码,看看会发生什么神奇的事情 - 可能是一些特殊的配置?- 让它发挥作用。
归档时间: |
|
查看次数: |
891 次 |
最近记录: |