child 和 parent 之间的连接

Connection between child and parent

我创建了自己的 TextField 小部件,我想使用 textField 的 onChange() 函数,所以我创建了一个回调函数,如下所示,我正在尝试打印给定的函数参数但接收到 null,我该如何处理这些回调;

回调函数

void childCallBack(dynamic value, dynamic property) {
    setState(() {
      property = value;
    });
  }

我如何在主状态下调用我的 TextField

TextFieldForProduct(
                property: widget.product.name,
                func: childCallBack,
                      )

还有我的 CustomTextFieldWidget

class TextFieldForProduct extends StatelessWidget {
  TextFieldForProduct({@required this.property, @required this.func});
  var property;
  Function func;
  @override
  Widget build(BuildContext context) {
    return Container(
    
     child: Padding(
        padding: const EdgeInsets.all(8.0),
        child: TextField(
          onChanged: (value) {
            func(value, property);
          },
         
      ),
    );
  }
}

传widget.product.name给TextFieldForProduct有什么意义,可以直接设置widget.product.name=值;在 childCallBack 中,因为两者在同一个 class 中可用。请看下面的代码:

  void childCallBack(String value) {
    setState(() {
      widget.product.name = value;
    });
  }

如何在主状态下调用 TextField:

  TextFieldForProduct(
       func: childCallBack,
   ),

CustomTextFieldWidget

class TextFieldForProduct extends StatelessWidget {
  const TextFieldForProduct({@required this.func});
  final Function func;
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Padding(
        padding: const EdgeInsets.all(8.0),
        child: TextField(
          onChanged: (String value) => func(value),
        ),
      ),
    );
  }
}