>

경로로 경로가있는 CustomPaint를 사용하여 사용자 정의 그려진 위젯을 작성했습니다. 그러나 위젯을 GestureDetector에 래핑하면 클릭 영역이 전체 캔버스 주위에 사각형이됩니다. 클릭 만 경로 내에서만 작동하도록 GestureDetector를 클립하는 방법이 있습니까?

  • 답변 # 1

    hitTest 를 구현할 수 있습니다   CustomPainter 의 방법 Path 를 추가하십시오  거기 path.contains(position) 조건을 사용  터치로 패스 부분 만 덮을 수 있습니다.

    class MyCustomPainter extends CustomPainter {
      @override
      void paint(Canvas canvas, Size size) {
        // TODO: implement paint
      }
      @override
      bool shouldRepaint(CustomPainter oldDelegate) {
        // TODO: implement shouldRepaint
        return null;
      }
      @override
      bool hitTest(Offset position) {
        Path path = Path();
        //add your lines/curves here
        path.close();
        return path.contains(position);
      }
    }
    
    
    

    bool hitTest(Offset position) 에 대한 추가 정보 :

    와이즈 비즈

    여기서 비슷한 질문에 대답했습니다. Flutter : CustomPainter 객체에서 터치 입력, 이동 및 종료를 감지하는 올바른 방법은 무엇입니까?

    Called whenever a hit test is being performed on an object that is using this custom paint delegate.

    The given point is relative to the same coordinate space as the last [paint] call.

    The default behavior is to consider all points to be hits for background painters, and no points to be hits for foreground painters.

    Return true if the given position corresponds to a point on the drawn image that should be considered a "hit", false if it corresponds to a point that should be considered outside the painted image, and null to use the default behavior.

  • 이전 node.js - firebase firestore - 클라우드 함수에서 collectiongroup 쿼리 사용
  • 다음 r - 대용량 데이터 세트를위한 매칭 샘플링 패키지 또는 기능