Flutter中如何根据用户输入的百分比实现价格增减计算?
解决方案
核心计算逻辑
不管是价格增减,本质都是把用户输入的百分比数值转换成小数后,和1做加减得到计算因子:
- 价格增加N%:计算因子 = 1 + (N / 100)
- 价格减少N%:计算因子 = 1 - (N / 100)
举个例子:
- 输入N=1时,增加因子是1+0.01=1.01,减少因子是1-0.01=0.99
- 输入N=1000时,增加因子是1+10=11.0,减少因子是1-10=-9.0(这里要注意:如果减少百分比超过100%,计算出的价格会是负数,实际业务中可能需要限制输入范围或做兜底处理,比如价格最低为0)
Flutter 代码实现示例
假设你有输入百分比的文本框,以及选择增减类型的控件,以下是核心计算代码:
// 基础价格 double basePrice = 1.45; // 用户输入的百分比字符串(实际从TextField获取) String inputPercentText = "10"; // 转换为数值,处理无效输入 double inputPercent = double.tryParse(inputPercentText) ?? 0.0; // 计算增加后的价格 double getIncreasedPrice() { double factor = 1 + (inputPercent / 100); return basePrice * factor; } // 计算减少后的价格(加入兜底,避免价格为负) double getDecreasedPrice() { double factor = 1 - (inputPercent / 100); return basePrice * (factor > 0 ? factor : 0); } // 调用示例 void main() { print("增加10%后的价格:${getIncreasedPrice()}"); // 输出1.595 print("减少10%后的价格:${getDecreasedPrice()}"); // 输出1.305 }
额外注意点
- 输入校验:可以给TextField添加输入格式器,限制只能输入数字和小数点,避免无效输入导致计算错误
- 业务边界:如果不允许价格为负,在减少计算时必须判断因子是否大于0,否则强制价格为0;如果业务允许超过100%的增减,直接按正常逻辑计算即可
内容的提问来源于stack exchange,提问作者NiiTii
相关产品推荐
相关产品推荐

