在 Flutter 中,处理 TextField 的失去焦点事件(即失去焦点时触发的操作)通常有两种常用方式:使用 FocusNode 或 onEditingComplete 回调。以下是具体实现:
Dart
import 'package:flutter/material.dart';
class MyTextField extends StatefulWidget {
@override
_MyTextFieldState createState() => _MyTextFieldState();
}
class _MyTextFieldState extends State<MyTextField> {
final FocusNode _focusNode = FocusNode();
final TextEditingController _controller = TextEditingController();
@override
void initState() {
super.initState();
_focusNode.addListener(_onFocusChange);
}
void _onFocusChange() {
if (!_focusNode.hasFocus) {
print('输入框失去焦点');
// 处理逻辑
}
}
@override
Widget build(BuildContext context) {
return TextField(
controller: _controller,
focusNode: _focusNode,
decoration: InputDecoration(
labelText: '请输入内容',
),
);
}
}
失去焦点事件通常用于验证用户输入、自动保存内容或触发其他相关操作,比如在用户完成输入后立即验证格式是否正确。4K壁纸