我正在编写一个使用自定义窗口小部件的多个实例的应用程序,并且我想调用特定实例的方法。
代码示例:
Widget build(BuildContext context) {
return Scaffold(
drawer: new DrawerOnly(storage: CounterStorage()),
appBar: AppBar(),
body: Stack(
children: <Widget>[
new Center(
child: new Object3D(
),
),
new Positioned(
top: 20,
left: 0,
child: new Object3D(
),
),
new Positioned(
top: 20,
left: 100,
child: new Object3D(
),
),
new Positioned(
top: 120,
left: 0,
child: new Object3D(
),
),
],
)
);
}
mymethod() {
//call first Object3D's method from here
}
}
我如何从其父级调用第一个Object3D的方法?
您将孩子存储在这样的列表中:
final object3Ds = List<Object3D>.generate(4, (_) => Object3D());
现在,您将该引用存储在父级中,然后可以在build
方法中传递该列表的元素:
...
Stack(
children: <Widget>[
Positioned(
child: object3Ds[0],
...
最后,您现在可以使用创建的列表访问对象:
object3Ds[0].callMethod();