【问题标题】:error The argument type 'List<String>' can't be assigned to the parameter type 'String'错误参数类型 \'List<String>\' 不能分配给参数类型 \'String\'
【发布时间】:2022-12-12 16:09:22
【问题描述】:

我试图通过采用我制作的模型来求和,但结果是一样的。 有没有人遇到过类似的情况以及如何解决。

这是我用类型做加法的功能 字符串参数,因为在 API 中数据类型是字符串。

  totalCalculate<NilaiMahasiswa>(nilaiAkhirUas, String nilaiIndeksAkhir) {
    int nilaiAkhirUas = int.parse(["nilay_akhir_uas"]!);
    double nilaiIndeksAkhir = double.parse(["nilay_akhir"]!);
    return nilaiAkhirUas + nilaiIndeksAkhir;
  }

这是当我调用上面或上面函数中的总和的结果但发生错误时

Flexible(
              child: FutureBuilder<NilaiMahasiswa>(
                future: Services().getNilaiMahasiswa(semester),
                builder: (context, snapshot) {
                  if (snapshot.hasData) {
                    return Text(
                      // 'IPK ${snapshot.data!.data?.first.updatedBy}',
                      'IPK $totalCalculate',
                      style: bold5,
                    );
                  } else if (snapshot.hasError) {
                    print(snapshot.data);
                    return Text('${snapshot.error}');
                  }
                  return const CircularProgressIndicator();
                },
              ),
            ),

这是显示的错误消息

【问题讨论】:

  • 你直接用键解析数据,试试这个:- int.parse(nilaiAkhirUas["nilay_akhir_uas"]!);
  • 仍然错误运算符“[]”没有为类型“Type”定义。尝试定义运算符 '[]'

标签: flutter dart


【解决方案1】:

int.parse 期望 String 而不是 List of String 所以,

  totalCalculate<NilaiMahasiswa>(nilaiAkhirUas, String nilaiIndeksAkhir) {
    int nilaiAkhirUas = int.parse(nilaiAkhirUas);
    double nilaiIndeksAkhir = double.parse(nilaiIndeksAkhir);
    return nilaiAkhirUas + nilaiIndeksAkhir;
  }

应该管用

【讨论】:

  • 不能将参数类型“int”分配给参数类型“String”。并且不能将参数类型“double”分配给参数类型“String”
  • 只需调整你放在“解析”上的数字。他们都期待 String。如果你有 double,就不需要再解析成 double
【解决方案2】:

您正在尝试从 List 解析 int int.parse(["nilay_akhir_uas"]!)。实际上这会引发错误。也许你只是喜欢看地图,我猜地图是nilaiAkhirUas。所以.tryParse是安全的

  totalCalculate<NilaiMahasiswa>(nilaiAkhirUas, String nilaiIndeksAkhir) {
    int nilaiAkhirUas = int.tryParse(nilaiAkhirUas["nilay_akhir_uas"]??"")??0;
    double nilaiIndeksAkhir = double.tryParse(nilaiAkhirUas["nilay_akhir"]??"")??0;
    return nilaiAkhirUas + nilaiIndeksAkhir;
  }

或者如果这些参数是字符串,你可以这样做

  totalCalculate<NilaiMahasiswa>(nilaiAkhirUas, String nilaiIndeksAkhir) {
    int nilaiAkhirUas = int.tryParse(nilaiAkhirUas??"")??0;
    double nilaiIndeksAkhir = double.tryParse(nilaiIndeksAkhir)??0;
    return nilaiAkhirUas + nilaiIndeksAkhir;
  }

【讨论】:

    【解决方案3】:

    也许您想这样做:

     totalCalculate<NilaiMahasiswa>(nilaiAkhirUas, String nilaiIndeksAkhir) {
        int nilay_akhir_uas = int.parse(nilaiAkhirUas);
        double nilay_akhir = double.parse(nilaiIndeksAkhir);
        return nilay_akhir_uas + nilay_akhir;
      }
    

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 2020-08-26
      • 2021-08-26
      • 2021-10-02
      • 2021-09-13
      • 2020-04-15
      • 2021-09-06
      • 2020-02-20
      • 1970-01-01
      相关资源
      最近更新 更多