我有下面的板。有一个2 x 10的小部件的覆盖(Stack
),一些透明的为DragTargets
,而在其上方,相同的宽度和高度为Draggable
。 Draggable
是包含图像的图像。
我面临的问题是,当我拖动上面的方法时,下面的方法中的onWillAccept
和onAccept
方法没有被调用。我猜是因为有小部件覆盖它们。
[我已经切换了小部件,使DragTargets
覆盖在Draggable
上,但是现在我无法拖动它们,因为它们位于其他小部件下方。
所有拖放示例都是从某处拖动一个项目并将其放置在另一个可拖动的一个dragTarget上。我需要一个小部件(或屏幕上的一个区域)既可拖动又可拖动。我该怎么办?
这里是布局
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");
},
);
}