Dart报错未为类型'Double'定义运算符'/',该怎么解决?
报错原因
错误标识:dart(undefined_operator)
错误信息:未为类型'Double'定义运算符'/',请尝试定义'/'运算符
该报错出现在代码Text("\$${product.price! / 100}"...)行,核心原因如下:
Dart语言内置的浮点数类型为小写开头的double,你代码中product.price的类型是大写开头的自定义Double类,该类没有实现除法/运算符的重载,因此无法直接执行除法运算。
修复方案
- 方案1:转换为内置数值类型后运算
绝大多数自定义Double包装类都会提供转内置double的方法,直接调用后再做除法即可,修改后代码如下:
部分自定义Padding( padding: const EdgeInsets.only(right: 8.0), child: Text("\$${product.price!.toDouble() / 100}", style: TextStyle( fontWeight: FontWeight.bold,Double类可能是通过value属性存储原始数值,可替换为product.price!.value / 100使用。 - 方案2:为自定义
Double类重载/运算符
如果你需要保留Double自定义类型的用法,可以在该类的定义中添加运算符重载逻辑:
重载完成后不需要修改原有运算代码即可正常运行。class Double { final double _value; const Double(this._value); // 重载除法运算符 double operator /(num divisor) => _value / divisor; } - 方案3:替换为Dart内置
double类型
如果是定义Product数据模型时误写了类型,直接把price字段的类型从自定义Double改为Dart内置的double即可,无需修改后续运算代码。
内容的提问来源于stack exchange,提问作者user17006689
相关产品推荐
相关产品推荐

