首页 > 解决方案 > 如何模拟对 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,如果可以,如何?

标签: flutterflutter-android

解决方案


推荐阅读