У меня есть Сетка Dragtargets, на которую я намереваюсь поставить Dragtbles. В настоящее время я делаю, когда вызывается конструктор dragTarget, я проверяю, что принятый список не пуст, а затем возвращаю контейнер с тем, как он должен выглядеть с Draggable, если список пуст, а затем вид по умолчанию. Но в настоящее время происходит то, что конструктор постоянно вызывается, когда над ним перемещается перетаскиваемый объект, и из-за этого мой вышеприведенный лог c не работает. Чего я не понимаю, так это почему сборка dragtarget вызывается постоянно. Я ожидаю, что он будет вызван один раз, когда на него упадет перетаскиваемый объект.
class DragTargetBoardState extends State<DragTargetBoard>{
@override
Widget build(BuildContext context) {
return DragTarget(
onWillAccept: (Coin coin) {
return true;
},
onAccept: (Coin coin) {
//something here
},
builder: (context, List<Coin> coins, rd) {
print("build called");
if(coins.length >0) {
return Center(
child: Container(
height: MediaQuery
.of(context)
.size
.height < 1000
? MediaQuery
.of(context)
.size
.height / 10
: 100,
width: MediaQuery
.of(context)
.size
.width < 1000
? MediaQuery
.of(context)
.size
.width / 10
: 100,
color: Colors.transparent,
child: DraggableCoin(coin: Coin(pos: coins[0].pos, player: coins[0].player)),
)
);
}else{
return Center(
child: Container(
height: MediaQuery
.of(context)
.size
.height < 1000
? MediaQuery
.of(context)
.size
.height / 10
: 100,
width: MediaQuery
.of(context)
.size
.width < 1000
? MediaQuery
.of(context)
.size
.width / 10
: 100,
color: Colors.transparent,
)
);
}
},
);
}
}