【发布时间】:2020-02-29 09:14:55
【问题描述】:
我正在 Flutter 中使用 Draggable(images)。目的是提供一个按钮,单击该按钮将形成新的 DragTarget,用户可以将图像拖动到拖动目标。在目标中拖动的图像列表将显示在相应的 DragTarget 中。
例如:给定一些口袋妖怪的图像,根据它们的类型对它们进行分组。用户可以创建新的 DragTarget 来对类似的 pokemon 进行分组。
问题:
我目前正在将掉落的口袋妖怪添加到一个列表中并显示它。因此,我可以在所有 DragTargets 中看到相同的口袋妖怪。
请观看此屏幕录像以了解该问题: https://youtu.be/XnJv3LiGfic
我正在维护一个名为 dragTargetList 的小部件 (DragTarget) 列表,并包装该列表以显示所有 DragTargets,方法是使用 setState() 向列表中添加一个。
每个 DragTarget 都包含一个名为 droppedImages 的图像列表,用于维护放置在目标中的图像。
如何在新的 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) {},
);
}
请帮帮我
【问题讨论】:
-
什么是可拖动的列表传入?有帮助吗?
-
你想在添加第二个后将 pockemon 拖到第一个目标吗?
-
能否发布整个代码,以便我们编译并尝试解决您的问题?
-
@AbhayKoradiya 是的
-
@PabloBarrera 当然
标签: listview flutter dynamic widget draggable