如何更改自定义小部件的方法(输入文本小部件)

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。