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),
),
),
);
}
}
我创建了自己的 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),
),
),
);
}
}