大家好,我有一个简单的函数,它将从我的服务器接收 double,然后它应该将此十进制解析为 double 并将其添加到 total amount 变量中
for (int i = 0; i < purchase.length; i++){
currentTotalPrice = currentTotalPrice + purchase[i]['total_price'];
}
问题是我收到的总价是数据库中的一个字符串格式的小数,当我尝试做类似(purchase[i]['total_price']).toDouble();
编译器抛出的事情时
Class 'String' has no instance method 'toDouble'.
Receiver: "15.00"
Tried calling: toDouble()
我不知道为什么在我的代码的其他部分它工作正常
这就是我接收数据的方式
Future<List> _fetchPurchases() async {
final prefs = await SharedPreferences.getInstance();
String accessToken = prefs.getString("accessToken");
final response = await http.get(
'$webSiteUrl/api/admin/purchases/${article['id']}/$_billNumber',
headers: <String, String>{
'Content-Type': 'application/json;',
'Authorization': 'Bearer $accessToken',
},
);
if(response.statusCode == 200){
List purchases = json.decode(response.body);
return purchases;
}else{
return showErrorMessage(context);
}
}
注意:我知道 Constructor 解决方案,您可以在其中创建一个类,然后将数据工厂化为自定义 dart 对象,但在某些情况下,我不能这样做,除非我重构了代码的很大一部分,所以如果有直接的方法喜欢toDouble()
方法这将是最好的解决方案
类中确实toDouble
不存在String
,但是如果一定要使用,可以创建一个扩展并导入,类似这样
extension NumberParsing on String {
double toDouble() {
return double.parse(this);
}
}
检查这个要点https://gist.github.com/fcontreras/d5095da7daa0ce24e0f3cb157b91e97f
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句