Flutter TextField 点击其他按钮调用 onSubmitted 事件
时间: 2024-02-24 18:58:26 浏览: 147
要实现在点击其他按钮时调用 `TextField` 的 `onSubmitted` 事件,你可以使用 `FocusNode` 和 `TextEditingController` 来实现。具体步骤如下:
1. 创建一个 `FocusNode` 对象,并将其传递给 `TextField` 的 `focusNode` 参数。
2. 创建一个 `TextEditingController` 对象,并将其传递给 `TextField` 的 `controller` 参数。
3. 在其他按钮的回调函数中,调用 `FocusNode` 的 `unfocus` 方法来取消 `TextField` 的焦点。
4. 在 `TextField` 的 `onSubmitted` 事件回调函数中,执行你想要执行的操作。
下面是一个示例代码:
```dart
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
final _focusNode = FocusNode();
final _textController = TextEditingController();
void _onButtonPressed() {
_focusNode.unfocus();
// 在这里执行其他操作
}
@override
Widget build(BuildContext context) {
return Column(
children: [
TextField(
focusNode: _focusNode,
controller: _textController,
onSubmitted: (_) {
// 在这里执行你想要执行的操作
},
),
RaisedButton(
onPressed: _onButtonPressed,
child: Text('其他按钮'),
),
],
);
}
}
```
在上面的示例代码中,点击 "其他按钮" 时,会调用 `_onButtonPressed` 方法来取消 `TextField` 的焦点。当用户在 `TextField` 中按下回车键时,会调用 `onSubmitted` 事件回调函数来执行其他操作。
阅读全文