如何更改自定义小部件的方法(输入文本小部件)
how to change method of custom widget ( input Text Widget )
这是我的海关输入文本小部件
```
TextInputLayout(
focusNode: focusNodeEmail,
controller: emailController,
label: AppLocalizations.of(context)
.translate("worker_id_hash"),
iconData: Icons.email,
errorText:
_validate ? 'Please Enter Valid Worker ID' : null,
inputType: TextInputType.emailAddress,
inputAction: TextInputAction.done,
textCapitalization: false,
onTextChange: () {},
),
```
怎么办? : 在键盘按钮 'Done' 单击转到新页面
```TextFormField(
focusNode: widget.focusNode,
controller: widget.controller,
textInputAction: widget.inputAction,
textCapitalization: widget.textCapitalization
? TextCapitalization.sentences
: TextCapitalization.none,
keyboardType: widget.inputType,
enabled: widget.enable == null ? true : false,
initialValue: widget.initialValue == null ? null : widget.initialValue,
onChanged: (value) {
widget.onTextChange();
setState(() {
widget.errorText = null;
});
},
onEditingComplete: () {
if (widget.inputAction == TextInputAction.done) {
FocusScope.of(context).unfocus();
} else {
FocusScope.of(context).requestFocus(widget.nextFocusNode);
}
},```
这个小部件在整个项目中使用,所以现在我如何更改 onEditingComplete 方法以导航到新页面
根据我对您问题的理解,您想根据此小部件当前所在的当前路由更改按下 onEditingComplete 的行为。
如果那是真的,我猜你在找什么是回调,根据维基百科的定义:
is any executable code that is passed as an argument to other code;
that other code is expected to call back (execute) the argument at a
given time.
用简单的英语来说,就是将一个function/method作为参数传递给另一个function/method以在其内部调用。
因此,在您的情况下,在您在整个应用程序中使用的小部件中,您将需要添加一个类型为 Function 或 VoidCallBack 的额外属性(取决于您的 function/method 是否 return 一个值)并将该属性传递给 TextFormField 的 onEditingComplete。
这是我的海关输入文本小部件
```
TextInputLayout(
focusNode: focusNodeEmail,
controller: emailController,
label: AppLocalizations.of(context)
.translate("worker_id_hash"),
iconData: Icons.email,
errorText:
_validate ? 'Please Enter Valid Worker ID' : null,
inputType: TextInputType.emailAddress,
inputAction: TextInputAction.done,
textCapitalization: false,
onTextChange: () {},
),
```
怎么办? : 在键盘按钮 'Done' 单击转到新页面
```TextFormField(
focusNode: widget.focusNode,
controller: widget.controller,
textInputAction: widget.inputAction,
textCapitalization: widget.textCapitalization
? TextCapitalization.sentences
: TextCapitalization.none,
keyboardType: widget.inputType,
enabled: widget.enable == null ? true : false,
initialValue: widget.initialValue == null ? null : widget.initialValue,
onChanged: (value) {
widget.onTextChange();
setState(() {
widget.errorText = null;
});
},
onEditingComplete: () {
if (widget.inputAction == TextInputAction.done) {
FocusScope.of(context).unfocus();
} else {
FocusScope.of(context).requestFocus(widget.nextFocusNode);
}
},```
这个小部件在整个项目中使用,所以现在我如何更改 onEditingComplete 方法以导航到新页面
根据我对您问题的理解,您想根据此小部件当前所在的当前路由更改按下 onEditingComplete 的行为。 如果那是真的,我猜你在找什么是回调,根据维基百科的定义:
is any executable code that is passed as an argument to other code; that other code is expected to call back (execute) the argument at a given time.
用简单的英语来说,就是将一个function/method作为参数传递给另一个function/method以在其内部调用。
因此,在您的情况下,在您在整个应用程序中使用的小部件中,您将需要添加一个类型为 Function 或 VoidCallBack 的额外属性(取决于您的 function/method 是否 return 一个值)并将该属性传递给 TextFormField 的 onEditingComplete。