You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:54:02