颤动的父组件如何调用子组件?

时间:2019-04-18 06:03:07

标签: dart flutter

父组件如何触发子组件的方法?如何触发Fathor中儿子的点击方法?如下图所示

enter image description here

enter image description here

2 个答案:

答案 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,
    );
  }
}