【Flutter】调用AndroidView 多指滑动报错问题

环境:

android8.1 以及 android 5.0(暂时推测为android8.1以下因为android10并没有此问题)

flutter 1.22.0+

使用AndroidView包了一下原生的高德地图,在地图上3+个手指头以上触摸屏幕则会爆以下错误。 

E/flutter ( 4633): #0      _AndroidMotionEventConverter.toAndroidMotionEvent
package:flutter/…/services/platform_views.dart:596
E/flutter ( 4633): #1      AndroidViewController.dispatchPointerEvent
package:flutter/…/services/platform_views.dart:864
E/flutter ( 4633): #2      _PlatformViewGestureRecognizer.handleEvent
package:flutter/…/rendering/platform_view.dart:535
E/flutter ( 4633): #3      PointerRouter._dispatch
package:flutter/…/gestures/pointer_router.dart:77
E/flutter ( 4633): #4      PointerRouter._dispatchEventToRoutes.<anonymous closure>
package:flutter/…/gestures/pointer_router.dart:122
E/flutter ( 4633): #5      _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
E/flutter ( 4633): #6      PointerRouter._dispatchEventToRoutes
package:flutter/…/gestures/pointer_router.dart:120
E/flutter ( 4633): #7      PointerRouter.route
package:flutter/…/gestures/pointer_router.dart:106
E/flutter ( 4633): #8      GestureBinding.handleEvent
package:flutter/…/gestures/binding.dart:358
E/flutter ( 4633): #9      GestureBinding.dispatchEvent
package:flutter/…/gestures/binding.dart:338
E/flutter ( 4633): #10     RendererBinding.dispatchEvent
package:flutter/…/rendering/binding.dart:267
E/flutter ( 4633): #11     GestureBinding._handlePointerEvent

过程:初步怀疑是高德地图的问题。但是在注释掉地图使用ScrollView测试时发现也爆此问题所以怀疑是收拾冲突引起的,于是在AndroidView外用GestureDetector进行包裹,结果能用了,不报错了(onTapDown必须赋值,要不也会报错)。

@override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTapDown: (event) {}, //虽然看着没啥用 但是解决 多指滑动报错问题 (android 8.1以下)
      child: AndroidView(
        viewType: 'plugin/aMapView',
        onPlatformViewCreated: (id) async {
          this.id = id;
          _channel = new MethodChannel('plugin/aMapView_$id');

          _channel.setMethodCallHandler(handelCallMethod);
          final bundle = await android_os_Bundle.create();

          _channel.invokeMethod("onCreate", {"bundle": bundle.refId});
        },
        creationParamsCodec: const StandardMessageCodec(),
        creationParams: {"zoomLevel": widget.zoomLevel},
      ),
    );
  }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值