flutter TextField 失去焦点事件

在 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壁纸