首页 > 解决方案 > 你如何在 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();
  }

标签: flutter

解决方案


这是我必须用来使它工作的代码。

for(int i = 0 ; i < tableBalls.length ; i++) tableBalls.elementAt(i),

换句话说,

for(int i = 0 ; i <yourListOfWidgets.length ; i++;) yourListofWidgets.elementAt(i),

推荐阅读