본문 바로가기

개발하자

펄럭이다. 드래그 가능 항목을 다른 드래그 가능 항목으로 끕니다

반응형

펄럭이다. 드래그 가능 항목을 다른 드래그 가능 항목으로 끕니다

아래 게시판이 있습니다. 2 x 10 위젯의 오버레이()가 있으며, 그 위에 있는 투명 위젯도 있고, 같은 폭과 높이의 위젯도 있다. 그것들은 이미지가 들어있는 것들이다.

enter image description here

내가 직면한 문제는 내가 위에 있는 것들을 끄는 동안 아래에 있는 것들과 메소드들이 호출되지 않는다는 것이다. 위젯이 덧씌워져서 그런 것 같아요.

위젯을 겹쳐 놓고 위젯을 전환했는데 다른 위젯보다 아래라서 끌 수가 없습니다.

드래그 앤 드롭의 모든 예는 항목을 플레이스에서 드래그하여 다른 항목, 드래그 가능한 항목, 드래그 대상 항목에 배치하는 것입니다. 위젯(또는 화면의 영역)이 드래그 가능한 동시에 드래그 대상이 되도록 해야 합니다. 어떻게 해야 이걸 해낼 수 있을까요?

여기 배치가 있습니다

          Align(
            child: Container(
              decoration: BoxDecoration(
                image: DecorationImage(
                  image: AssetImage("images/user_board.jpg"),
                  alignment: Alignment.bottomCenter,
                ),
              ),
              height: _userBoardH,
              child: Column(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: <Widget>[
                  Container(
                      height: _tileH,
                      child: Stack(children: <Widget>[
                        Row(
                          children: _buildSlots(ScreenBoard.FIRST_ROW),
                        ),
                        Row(
                          children: _buildTiles(ScreenBoard.FIRST_ROW),
                        ),
                      ])),
                  Container(
                      height: _tileH,
                      child: Stack(children: <Widget>[
                        Row(
                          children: _buildSlots(ScreenBoard.SECOND_ROW),
                        ),
                        Row(
                          children: _buildTiles(ScreenBoard.SECOND_ROW),
                        ),
                      ])),
                ],
              ),
            ),
            alignment: Alignment.bottomCenter,
          ),

건배.

편집하다

패트릭의 제안에 따라 해결했다. 해결책은 다음과 같습니다:

Widget _buildTile(Tile widget) {
  return DragTarget<Map>(
    builder: (context, candidateData, rejectedData) {
      return Container(
        child: Draggable<Map>(
          child: _getTile(widget),
          feedback: _getTile(widget),
          childWhenDragging: Container(
            width: widget._dimenW,
            height: widget._dimenH,
          ),
          data: {
            Tile.DATA_TILE_ROW_TYPE: widget._rowType,
            Tile.DATA_TILE_ROW_POS: widget._rowPosition,
            Tile.DATA_TILE_ID: widget._tileId,
          },
        ),
      );
    },
    onWillAccept: (data) {
      UDebug.log("onWillAccept");
      return false;
    },
    onAccept: (data) {
      UDebug.log("onAccept");
    },
  );
}



컨테이너() 위젯에 싸서 이미지를 상자 장식()에 넣고 하위 속성을 사용하여 드래그 가능()을 잡습니다.

이렇게 해도 포인터 이벤트에 방해가 되지 않습니다.




번거롭게 해드려 죄송합니다, 오픈소스 프로젝트인가요? 코드를 볼 기회가 있을까요?


반응형