Dart开发中如何防止用户为存储年龄的int变量传入负值
Dart 限制年龄变量为非负值的实现方法
下面是两种常用的简便实现方式,都可以适配按钮增减的使用场景:
方案1:用 getter/setter 封装(无额外依赖,最通用)
通过私有变量+对外校验的赋值入口,所有修改都会自动走校验逻辑,无需每次操作都手动判断:
class UserModel { // 私有变量存储实际年龄,可根据业务设置合理初始值,比如0、1 int _age = 0; // 对外暴露年龄取值 int get age => _age; // 赋值时自动拦截负值 set age(int inputValue) { if (inputValue >= 0) { _age = inputValue; } // 若需要负值提示,可在这里加异常抛出/Toast逻辑 } // 适配按钮操作的增减方法 void addAge() => age += 1; void minusAge() => age -= 1; }
使用时直接调用增减方法即可,就算连续点击减号,到0之后也不会变成负值。
方案2:响应式封装(适合Flutter界面联动场景)
如果需要年龄变化自动更新UI,可以自定义带校验的ValueNotifier,全局修改都会自动校验:
import 'package:flutter/foundation.dart'; class AgeNotifier extends ValueNotifier<int> { AgeNotifier() : super(0); @override set value(int newValue) { // 仅非负值会被赋值 if (newValue >= 0) { super.value = newValue; } } }
使用时直接操作value即可:
final ageNotifier = AgeNotifier(); // 加年龄 ageNotifier.value +=1; // 减年龄,到0后自动拦截负值 ageNotifier.value -=1;
内容的提问来源于stack exchange,提问作者Tanvir Hasan
相关产品推荐
相关产品推荐

