首页 > 解决方案 > 函数中的零安全问题

问题描述

我有一个名为 add 的函数,它将两个数字相加并在 dart 中返回结果。

void main() {
  int step1Result = add(n1: 5, n2: 9);
  int step2Result = multiply(step1Result, 5);
  double finalResult = step2Result / 3;
  print(finalResult);
}

int add({int n1, int n2}){
  return n1 + n2;
}

但它不断抛出错误,n1因为n2它的类型不能有“null”的值,但隐含的默认值是“null”。我尝试添加?标记,但它抛出另一个错误说

The operator '+' can't be unconditionally invoked because the receiver can be 'null'.

标签: flutterdartdart-null-safety

解决方案


错误来自add函数的声明:这里

int add({int n1, int n2}){
    // ...
}

在这里,您要为函数声明两个可选参数。But n1and n2are intand notint?

要解决此问题,您可以将函数转换为采用int?类型。或者添加required关键字来告诉函数只有在同时给出两个参数的情况下才能工作。

void main() {
    int step1Result = add(n1: 5, n2: 9);
    int step2Result = multiply(step1Result, 5);
    double finalResult = step2Result / 3;
    print(finalResult);
}

int add({required int n1,required int n2}){
    return n1 + n2;
}

您可以在官方文档中了解更多关于 null-safety 语法和原则的信息:https ://flutter.dev/docs/null-safety 。

https://api.flutter.dev/flutter/material/DropdownButton-class.html


推荐阅读