![](/img/trans.png)
[英]Flutter: Do you have an idea on how to create a scrollable stack with few positioned widgets and mostly empty space?
[英]How do you dislplay a List of Positioned Widgets in a Stack in Flutter?
我需要在堆栈中显示定位小部件的列表(如下)。
List<TableDraggableBall> tableBalls = [
TableDraggableBall(selectedTableBall: 'images/Cue-Ball.png', left: 150, top: 200),
TableDraggableBall(selectedTableBall: 'images/8-Ball.png', left: 800, top: 100),
TableDraggableBall(selectedTableBall: 'images/9-Ball.png', left: 200, top: 300),
];
这是构建列表的 Widget。
class TableDraggableBall extends StatefulWidget {
@required
final String selectedTableBall;
double left;
double top;
TableDraggableBall({required this.selectedTableBall, required this.left, required this.top});
@override
_TableDraggableBallState createState() => _TableDraggableBallState();
}
class _TableDraggableBallState extends State<TableDraggableBall> {
@override
Widget build(BuildContext context) {
return Positioned(
top: widget.top,
left: widget.left,
child: Draggable<String>(...)
);
}
}
最后,我需要将所有“TableDraggableBall”放入以下堆栈中。 我确信这很容易做到,但我不知道显示整个小部件列表的语法是什么。 我已经被困在这里几个小时了。 我已经尝试了每一个,for in,我能找到的任何东西,但我似乎无法获得正确的语法。 (只编程了大约一个月)
@override
Widget build(BuildContext context) {
return.....
Stack(
children: [
Center(...),
Center(...),
tableBalls.last,
],
),
.....
}
如果我将 tableBalls.last 放入堆栈中,它会起作用并显示列表中的最后一个球。 如果我把 tableball.first 放在首位,它也可以。 将所有小部件添加到屏幕的语法是什么?
我也试过这样做,但是当我在堆栈中调用 displayAllBalls() 时,我收到一条错误消息“无法将‘List’类型的值分配给‘Widget’类型的变量”
List displayAllBalls() {
List<TableDraggableBall> tableDraggableBalls = [
TableDraggableBall(
selectedTableBall: 'images/Cue-Ball.png', left: 150, top: 200),
TableDraggableBall(
selectedTableBall: 'images/8-Ball.png', left: 800, top: 100),
TableDraggableBall(
selectedTableBall: 'images/9-Ball.png', left: 200, top: 300),
];
return displayAllBalls.call();
}
这是我必须用来使它工作的代码。
for(int i = 0 ; i < tableBalls.length ; i++) tableBalls.elementAt(i),
换句话说,
for(int i = 0 ; i <yourListOfWidgets.length ; i++;) yourListofWidgets.elementAt(i),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.