用途:在 Flutter 中实现带校验的有状态表单,使用 Form、TextFormField 和 GlobalKey<FormState>,在避免不必要的 key 重建的前提下高效管理验证状态。前提是已有 Flutter 环境并可用 Material Design 依赖。
主要能力:通过 GlobalKey<FormState> 触发整体校验;校验失败时 FormState 自动重建各 TextFormField 以显示 validator 返回的错误字符串并中止提交;校验通过后可继续处理数据(如 API 调用、本地存储)并给出成功反馈。
使用方式:创建 StatefulWidget,在 State 类中仅实例化一次 GlobalKey<FormState>,作为 Form 的 key。将 TextFormField 放入 Form 子树,为每个字段提供 validator;输入有效时返回 null。提交按钮中调用 _formKey.currentState!.validate(),为真时按需调用 _formKey.currentState!.save(),并给出反馈,例如 ScaffoldMessenger.of(context).showSnackBar。
适用场景:需要在 Flutter 应用中收集并校验用户输入的界面,例如邮箱等字段的必填与格式校验。
限制与约束:GlobalKey<FormState> 不得在 build 方法内实例化,必须是 State 类的持久成员;除非 key 由有状态父级传入,否则不要用 StatelessWidget 作为表单容器;需要内建验证时应使用 TextFormField 而非普通 TextField;validator 在输入有效时必须显式返回 null,返回空字符串会触发无文字的报错状态;需确保 Form 是所要校验的所有 TextFormField 的共同祖先。资料中未提供具体字段、精确校验规则和成功后的具体动作等信息。