mapbox / mapbox/mapbox-maps-flutter
TransparentPointer fail
まだ誰も着手していません。
- 主要言語
- Dart
- スター
- 380
- フォーク
- 204
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
I'm trying to switch from using the [flutter-mapbox-gl](https://github.com/flutter-mapbox-gl/maps) plugin to this one, and I ran into an issue...
I'm using a [transparent pointer](https://pub.dev/packages/transparent_pointer) over the map, in a Stack widget, so I can turn off some automated panning and zooming if the user starts interacting with the map; I'm interpreting gestures as pans, zooms, and rotates, and also letting the gestures bubble through to the map. This works fine with that other mapbox plugin, but with this one I get:
```
I/flutter ( 8823): ⚠️ Unhandled Flutter error: 'package:flutter/src/gestures/tap.dart': Failed assertion: line 210 pos 14: '_down == null && _up == null': is not true.
======== Exception caught by gesture library =======================================================
The following assertion was thrown while dispatching a pointer event:
'package:flutter/src/gestures/tap.dart': Failed assertion: line 210 pos 14: '_down == null && _up == null': is not true.
Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.md
When the exception was thrown, this was the stack:
#2 BaseTapGestureRecognizer.addAllowedPointer (package:flutter/src/gestures/tap.dart:210:14)
#3 GestureRecognizer.addPointer (package:flutter/src/gestures/recognizer.dart:160:7)
#4 RawGestureDetectorState._handlePointerDown (package:flutter/src/widgets/gesture_detector.dart:1498:18)
#5 RenderPointerListener.handleEvent (package:flutter/src/rendering/proxy_box.dart:3168:29)
#6 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:440:22)
#7 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:336:11)
#8 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:395:7)
#9 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:357:5)
#10 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:314:7)
#11 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:295:7)
#12 _invoke1 (dart:ui/hooks.dart:164:13)
#13 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:361:7)
#14 _dispatchPointerDataPacket (dart:ui/hooks.dart:91:31)
(elided 2 frames from class _AssertionError)
Event: PointerDownEvent#85236(position: Offset(222.0, 753.2))
position: Offset(222.0, 753.2)
Target: RenderPointerListener#00676 relayoutBoundary=up8
parentData: (can use size)
constraints: BoxConstraints(0.0<=w<=411.4, 0.0<=h<=819.4)
size: Size(411.4, 819.4)
behavior: deferToChild
listeners: down, panZoomStart
```
Is there a way to make this work?
Alternatively, is there a way to listen for *user initiated* zooms, pans, and rotates with this package?
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、レポートに示されているジェスチャーコールバックを使い、Stack 内の map の上に transparent_pointer を置いた状態で assertion を再現します。tap.dart、gesture_detector.dart、および map パッケージのジェスチャーエントリーポイント周辺にある Flutter のジェスチャースタックを読みます。操作によって assertion が発生しなくなり、ユーザーが開始した pan、zoom、rotate ジェスチャーを区別または文書化できれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- dart, flutter
- 領域
- mobile
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100