繁体   English   中英

如何在 Flutter 中显示堆栈中的已定位小部件列表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM