我想从 flutter 中的另一个有状态类调用一个有状态类中存在的方法

时间:2021-03-29 21:53:30

标签: flutter dart flutter-layout

有两个有状态小部件,我想从另一个 onTap 调用一个类中存在的方法。下面是简短的代码:

# NLP result
Parse = '(ROOT\n  (S\n    (NP (DT This))\n    (VP (VBZ is)\n      (NP (DT a) (NN test) (NN message)))\n    (. .)))'

# output code
def output_nlp(Json_data, tokn, Pos, Ner, Parse, Dep_parse):
    parse_tree = ParentedTree.fromstring(Parse)
    parse_tree.pretty_print()
    return "NLP Parse: \n {}".format(Parse)

是的,SecondClass 存在于 FirstClass 的小部件树中

1 个答案:

答案 0 :(得分:1)

你可以这样做。如果您的 SecondClassFirstClass 小部件树中。您可以在 SecondClass 上创建一个 Function onTap() 构造函数并在 FirstClass 上使用它的 onTap

class FirstClass extends StatefulWidget {
  @override
  _FirstClassState createState() => _FirstClassState();
}

class _FirstClassState extends State<FirstClass> {
  void next() {
    setState(() {
      // SOME CODE
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        children: [
          SecondClass(
            onTap: () => next(),
          )
        ],
      ),
    );
  }
}

class SecondClass extends StatefulWidget {
  final Function onTap;

  const SecondClass({Key key, this.onTap}) : super(key: key);
  @override
  _SecondClassState createState() => _SecondClassState();
}

class _SecondClassState extends State<SecondClass> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        onPressed: () => widget.onTap(),
        child: Text("BUTTON"),
      ),
    );
  }
}
相关问题