gpt4 book ai didi

flutter 。将一个 Draggable 项拖到另一个 Draggable 项上

转载 作者:行者123 更新时间:2023-12-03 16:38:15 27 4
gpt4 key购买 nike

我有下面的板。有一个覆盖( Stack )的 2 x 10 小部件,一些透明的小部件是 DragTargets在它们之上,相同的宽度和高度有 Draggable . Draggable那些是包含图像的那些。

enter image description here

我面临的问题是 onWillAcceptonAccept当我拖动上面的方法时,不会调用下面的方法。我猜是因为有覆盖它们的小部件。

我已经切换了小部件,有 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");
},
);
}

最佳答案

将它包装在 Container() 小部件中,并将图像放入 BoxDecoration() 并使用 child: 属性来保存您的 Draggable()。

这不会阻碍您的指针事件。

关于 flutter 。将一个 Draggable 项拖到另一个 Draggable 项上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58291327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com