首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析参数类型'String?‘不能分配给参数类型'String‘

如何解析参数类型'String?‘不能分配给参数类型'String‘
EN

Stack Overflow用户
提问于 2021-05-12 07:22:13
回答 6查看 5.9K关注 0票数 5

在高于2.12.0的dart sdk中,我们经常使用'?‘为了确保该参数也可以具有空值,但是如何使用转换数据类型?转换为数据类型时不带?反之亦然。排序“int”的最好方法是什么?不能为'int‘类型。

EN

回答 6

Stack Overflow用户

发布于 2021-05-15 23:44:43

在将可空字符串(String?)分配给不可空字符串(String)时,会出现此错误。对于ex:

代码语言:javascript
复制
String? s = 'a';

int expectsString(String s) => s.length;

void main() {
  expectsString(s); // <-- Error
}

解决方案是提供一个不可为空的String。您可以使用以下命令来完成此操作:

(1)局部变量:

代码语言:javascript
复制
void main() {
  var s1 = s; // Local variable 
  expectsString(s1 ?? 'default value');
}

(2) Bang运算符:

代码语言:javascript
复制
void main() {
  expectsString(s!); // Bang operator
}
票数 11
EN

Stack Overflow用户

发布于 2021-05-12 07:42:54

空安全是一种方法,它告诉我们一个类型可以是空的,也可以不是空的,你没有在对象中包装任何东西,所以你没有任何东西要解包。

也许您将其与函数式语言或Java中的可选类型混淆了。其中,如果可选类型包含值,则可以对其进行解包。

使用dart,google做出了另一个决定,让用户可以编写干净的代码,而不检查对象是否为空,反之亦然,因此使用空安全性,您可以从数学上证明您的代码不能访问空引用。

因此,如果您需要解开空对象,或者您不需要它,或者您需要这样的检查

代码语言:javascript
复制
foo(int? i) {
  if (i != null) {
    print(i + 1);
  }
}

我想指出一个dart开发人员的很好的参考资料,它描述了为什么谷歌采取这个决定https://medium.com/dartlang/why-nullable-types-7dd93c28c87a

票数 2
EN

Stack Overflow用户

发布于 2021-06-16 18:13:57

我在我的一个flutter应用程序中遇到了类似的问题,我已经通过从String?String的类型转换解决了这个问题。

就像下面的代码一样:

代码语言:javascript
复制
// I'm using a List with one element to generate the same error,
// because the error doesn't happen for one single variable.

List<String?> imageUrls = ['https://www.example.com/example_image.png',];

// you cast the element imageUrls[0] with 'as' keyword from String? to String

NetworkImage(imageUrls[0] as String); // NetworkImage() takes String parameter
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67495492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档