flutter - 如何模拟对 RenderAndroidView 的点击?
问题描述
我需要在 RenderAndroidView (一个 GoogleMap 插件)的特定位置模拟点击,但我无法让它工作。
这是我迄今为止尝试过的一种变体:
GlobalKey googleMapKey = GlobalKey();
GoogleMap(
key: googleMapKey,
... // etc.
)
final renderObj = googleMapKey.currentContext.findRenderObject();
if (renderObj is RenderBox) {
BoxHitTestResult hitTestResult = BoxHitTestResult();
if( renderObj.hitTest(hitTestResult, position: tapPosition) ){
PointerEvent pointerEvent = PointerDownEvent(position: tapPosition);
final hitTestEntry = hitTestResult.path.firstWhere((element) => element.target is RenderAndroidView);
hitTestEntry.target.handleEvent(pointerEvent, hitTestEntry);
}
}
这给了我以下错误:
'package:flutter/src/gestures/pointer_router.dart': Failed assertion: line 31 pos 12: '!routes.containsKey(route)': is not true.
I/flutter ( 2544): #0 _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
I/flutter ( 2544): #1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
I/flutter ( 2544): #2 PointerRouter.addRoute (package:flutter/src/gestures/pointer_router.dart:31:12)
I/flutter ( 2544): #3 OneSequenceGestureRecognizer.startTrackingPointer (package:flutter/src/gestures/recognizer.dart:324:44)
I/flutter ( 2544): #4 _PlatformViewGestureRecognizer.addAllowedPointer (package:flutter/src/rendering/platform_view.dart:518:5)
I/flutter ( 2544): #5 GestureRecognizer.addPointer (package:flutter/src/gestures/recognizer.dart:103:7)
I/flutter ( 2544): #6 _PlatformViewGestureMixin.handleEvent (package:flutter/src/rendering/platform_view.dart:726:27)
是否可以在 a 上的特定位置模拟点击RenderAndroidView
,如果可以,如何?
解决方案
推荐阅读
- r - 如何将插入符号/时间片用于面板数据?
- linux - 在 mongodb 更新之后,mongodb 不会在 centos 7 上启动
- c++ - WCHAR 在 linux 中无法正常运行
- python - 即使在递归调用中,“非本地”变量是否总是从外部循环继承?
- mysql - 使用单个语句将员工表中的部门 ID 从 1 更新为 2 和从 2 更新为 1?
- jestjs - 成功执行 Jest 测试后“CircleCI 收到退出代码 1”
- sql - 更新触发器
- docker - Docker Swarm Mode 违反了创建时的约束?
- java - android api 29+ 热点/路由器客户端的IP/mac
- javascript - 如何添加功能(长)