简体   繁体   English

如何从 Flutter 中的子小部件调用父小部件 function

[英]How to call parent widget function from child widget in Flutter

I have a Parent StatefulWidget and Child StatefulWidget.我有一个父 StatefulWidget 和子 StatefulWidget。 I want to call a function of parent widget ie goToPreviousItem from the child widget.我想从子小部件调用父小部件的 function 即goToPreviousItem

Parent Class父 Class

class Parent extends StatefulWidget {
 @override
 _ParentState createState() => _ParentState();
 }

class _ParentState extends State<Parent> {
 String item = 0;
 @override
 Widget build(BuildContext context) {
   return ChildClass();
 }


goToPreviousItem(value){
 setState(() {item = value});
 }
}

Child Class儿童 Class

class Child extends StatefulWidget {
 @override
 _ChildState createState() => _ChildState();
 }

class _ChildState extends State<Child> {
 @override
 Widget build(BuildContext context) {
   return Container(
  child: FlatButton(
    color: Color(0XFFEFEFEF),
    textColor: primaryColor,
    disabledColor: Colors.grey,
    disabledTextColor: Colors.black,
    padding: EdgeInsets.symmetric(
        vertical: 15.0, horizontal: 10.0),
    onPressed: () => goToPreviousItem(2),
    child: Text(
      "Update",
    ),
  ),
);
   }
 }

How can I do that?我怎样才能做到这一点?

  1. Create a Function type parameter inside your child widget.在您的子小部件中创建一个Function类型参数。

     class Child extends StatefulWidget { Function function; Child({this.function}); @override _ChildState createState() => _ChildState(); } class _ChildState extends State<Child> { @override Widget build(BuildContext context) { return Container( child: FlatButton( color: Color(0XFFEFEFEF), textColor: primaryColor, disabledColor: Colors.grey, disabledTextColor: Colors.black, padding: EdgeInsets.symmetric( vertical: 15.0, horizontal: 10.0), onPressed: () => widget.function(2), child: Text( "Update", ), ), ); } }
  2. Pass the function goToPreviousItem as a parameter from the parent widget to child widget.将 function goToPreviousItem作为参数从父窗口小部件传递给子窗口小部件。

     Child(function: goToPreviousItem);
  3. Access your function using widget.function(2) inside the child widget.使用子小部件内的widget.function(2)访问您的 function。

typedef parentFunctionCallback = void Function(String value);

class Parent extends StatefulWidget {
  @override
  _ParentState createState() => _ParentState();
}

class _ParentState extends State<Parent> {
  String item = 'data';
  
  @override
  Widget build(BuildContext context) {
    return ChildClass(goToPreviousItem);
  }
  
  goToPreviousItem(String value){
    setState(() {item = value;});
  }
}

class ChildClass extends StatefulWidget {
  const ChildClass(this.parentfunc);
  
  /// ToDo
  final parentFunctionCallback parentfunc; 
  
  @override
  _ChildState createState() => _ChildState();
}

class _ChildState extends State<ChildClass> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: FlatButton(
        color: Color(0XFFEFEFEF),
        textColor: primaryColor,
        disabledColor: Colors.grey,
        disabledTextColor: Colors.black,
        padding: EdgeInsets.symmetric(
            vertical: 15.0, horizontal: 10.0),
        onPressed: () => widget.parentfunc('mail'),
        child: Text(
          "Update",
        ),
      ),
    );
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从子小部件调用父小部件中的 function | Flutter - How to Call a function in parent widget from child widget | Flutter Flutter - 如何从子小部件调用父小部件函数,同时还使用变量保持状态? - Flutter - How do I call a Parent widget function from child widget while also maintaining the state with a variable? Flutter - 如何从父级调用子级小部件的方法 - Flutter - how to call child widget's method from parent Flutter:当小部件没有父/子关系时,如何从小部件 B 调用小部件 A 中的 function? - Flutter: How do I call a function in widget A from widget B when the widgets do not have a parent/child relationship? 在颤动中从父小部件重置子小部件 - Reset child widget from parent widget in flutter 如何将数据从子状态小部件传递到 Flutter 中的父小部件 - How to pass data from a child Stateful widget to Parent Widget in Flutter 如何在flutter中从父小部件调用子小部件的initState()方法 - How to Invoke initState() method of child widget from parent widget in flutter 如何从父小部件调用子小部件的 setState? - How can I call setState of a child widget from a parent widget? 如何从父小部件在子有状态小部件内运行函数? - How to run a function inside a child stateful widget from parent widget? Flutter,如何从返回的 Widget 调用 Stateful Widget 内部的函数? - Flutter, how to call a function inside Stateful Widget from a returned Widget?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM