如何为Flutter的TextFormField设置必填或非必填校验?
为Flutter的TextFormField设置必填/非必填状态
你可以通过判断required参数的布尔值,动态给TextFormField设置validator属性来实现需求:
- 当
required为true时,启用必填校验逻辑 - 当
required为false时,将validator设为null(无需校验)
修改后的完整代码如下:
Widget _textInput({controller, name, enable, autofocus, required}) { return Container( child: TextFormField( autofocus: autofocus, enabled: enable, cursorColor: Colors.black, controller: controller, decoration: InputDecoration( filled: true, fillColor: Colors.white, focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.black45), ), ), // 根据required参数动态切换校验器 validator: required ? (value) => value!.isEmpty ? 'Required!' : null : null, ), ); }
额外优化建议
如果后续需要扩展校验逻辑,可以把校验逻辑抽成单独的方法,让代码更易维护:
// 抽离必填校验方法 String? _requiredFieldValidator(String? value) { return value!.isEmpty ? 'Required!' : null; } Widget _textInput({controller, name, enable, autofocus, required}) { return Container( child: TextFormField( autofocus: autofocus, enabled: enable, cursorColor: Colors.black, controller: controller, decoration: InputDecoration( filled: true, fillColor: Colors.white, focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.black45), ), ), validator: required ? _requiredFieldValidator : null, ), ); }
内容的提问来源于stack exchange,提问作者babayaro
相关产品推荐
相关产品推荐

