【问题标题】:Flutter Can't Convert String To Double颤振无法将字符串转换为双精度
【发布时间】:2020-12-14 14:44:27
【问题描述】:

大家好,我有一个简单的函数,它将从我的服务器接收双精度,然后它应该将这个小数解析为双精度并将其添加到总金额变量中

            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);
  }
}

注意:我知道构造函数解决方案,您可以在其中创建一个类,然后将数据工厂化到自定义 dart 对象,但在某些情况下,除非我重构很大一部分代码,否则我不能这样做,所以如果有像toDouble()这样的直接方法将是最好的解决方案

【问题讨论】:

    标签: json api flutter parsing


    【解决方案1】:

    确实toDoubleString类中是不存在的,但是如果一定要使用,可以创建一个扩展并导入,类似这样

    extension NumberParsing on String {
      double toDouble() {
        return double.parse(this);
      }
    }
    

    检查这个要点https://gist.github.com/fcontreras/d5095da7daa0ce24e0f3cb157b91e97f

    【讨论】:

    • 基本上是它的 double.parse() 方法,无论如何我尝试直接执行它并且它工作正常我不知道为什么但昨天它没有^_*
    猜你喜欢
    • 2015-04-24
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2020-07-17
    • 2011-08-11
    相关资源
    最近更新 更多