答案 0 :(得分:1)
如前所述,您需要使用回调。这意味着您将函数传递给需要时调用的孩子。您将从内而上,而不是自上而下地工作。
您将把函数存储为成员变量,并且在单击孩子时,将调用该函数。该函数将在您的父级中调用,您可以将所需的任何数据传递回父级,就像调用普通函数一样。
这里有一些伪代码可以用来进行调整
class son extends StatelessWidget {
Function onClicked;
son({this.onClicked});
Widget build(...) {
return GestureDetector(
child: Container(...),
onTap: onClicked
)
}
}
class father extends StatelessWidget {
Widget build(...) {
return Container(
child:son(onClicked: _clicked)
)
}
void _clicked() {
print('clicked');
}
}
此外,请绝对将您的班级名称更改为以大写字母开头。
答案 1 :(得分:0)
class father extends StatelessWidget {
var child;
@override
Widget build(BuildContext context) {
child = son();
return Scaffold(
body: child,
floatingActionButton: FloatingActionButton(
onPressed: () => child?.childFunction(),
),
);
}
}
class son extends StatelessWidget {
void childFunction() => print('called in child widget');
@override
Widget build(BuildContext context) {
return Container(
color: Colors.red,
);
}
}