如何解决Flutter空安全下表单校验使用isEmpty触发报错的问题
Flutter表单校验isEmpty空安全报错解决方法
报错原因
Dart空安全规则下,Form组件validator回调的入参value为String?可空类型,直接对可能为null的变量调用.isEmpty方法会触发编译校验失败。
解决方案
有两种常用的兼容写法可选:
- 方式一:使用空安全调用+空值默认值,通过
?.规避null调用风险,再通过??指定value为null时的默认判断结果 - 方式二:先判断value是否为null,Dart的类型提升机制会在判空后自动将value识别为非空
String类型,再调用.isEmpty就不会报错
修改后的代码示例:
validator: (value){ // 方式一写法,二选一即可 if(value?.isEmpty ?? true){ return 'name must be Entered'; } // 方式二写法 // if(value == null || value.isEmpty){ // return 'name must be Entered'; // } return null; },
内容的提问来源于stack exchange,提问作者Omar Youssef
相关产品推荐
相关产品推荐

