Я работаю с Draggable (изображения) в Flutter. Цель состоит в том, чтобы предоставить кнопку, при нажатии которой будет сформирован новый объект DragTarget, и пользователь сможет перетащить изображение к цели перетаскивания. Список изображений, перетаскиваемых в цель, будет отображаться в соответствующей DragTarget.
Например: учитывая несколько изображений покемонов, сгруппируйте их по типу. Пользователи могут создавать новые DragTarget для группировки похожих покемонов.
Проблема:
В настоящее время я добавляю отброшенного покемона в один список и отображаю его. Следовательно, я вижу одного и того же покемона во всех DraggedTargets.
, пожалуйста, просмотрите эту запись экрана для проблемы: https://youtu.be/XnJv3LiGfic
Я веду списоквиджеты (DragTarget) с именем dragTargetList и перенос списка для отображения всех DragTargets с помощью setState () для добавления еще одного в список.
Каждый DragTarget содержит список изображений с именем dropImages, сохраняющий изображения, сброшенные в цель.
Как создать новый список в новом DragTarget Creation и поддерживать его таким образом, чтобы каждый DragTarget отображал только список изображений, упавших в нем?
List<Widget> getDragTargetList=[];
List<String> droppedImages=[]; //tplaceholder, we need dynamic list instead of //this
Widget temp(){
return Column(
children: <Widget>[
Row(children:<Widget>[
Wrap( children: List.generate(imageList.length, (e) => Draggable(child:
Container(child: Image.network( imageList[e])),
feedback: Container(height:10, width:10, color: Colors.lightBlue,),
childWhenDragging: Container())
)),]),
IconButton(
icon: Icon(Icons.add),
onPressed: (){setState(){getDragTargetList.add(getDragTarget());}},
),
Wrap(children: List.generate(getDragTargetList.length, (e)=>getDragTargetList[e]),)
],
);
}
Widget getDragTarget(){
return DragTarget<String>(
builder: (BuildContext context, List<String> incoming, List rejected) {
return Container(
color: Colors.cyan,
child:
Wrap(
children: List.generate(droppedImages.length, (e)=> //need to create and maintain dynamic list here
Container(height: 20, width: 20, child:_getCircularAvatar(droppedImages[e]),)),
),
alignment: Alignment.center,
height: 80,
width: 200,
);
},
onWillAccept: (data){return true;},
//=> data == emoji,
onAccept: (data) {
setState(() {
droppedImages.add(data);
});
},
onLeave: (data) {},
);
}
Пожалуйста, помогите мне с