gpt4 book ai didi

dart - 使用Null类型参数进行Dart 2.7的Dart迁移

转载 作者:行者123 更新时间:2023-12-03 04:59:05 27 4
gpt4 key购买 nike

我正在尝试在Windows上将一些旧的dart 1.25代码迁移到2.7。
我遇到了一些错误,而且我不知道如何解决这些错误。

该代码在typedef中使用了一些Null类型参数,如下所示:

typedef dynamic PropertyGetter(Null object);

我不明白为什么要这样编码,但它在1.25上有效。
该typedef用于获取任何传递的对象类型的属性,我想可能是Null。
我还假定Null类型参数有他自己的理由。

但是现在,使用dart 2.7,执行代码时出现如下错误:
type 'XXXType' is not a subtype of type 'Null'

任何知道如何typedef代码可以修复?

-编辑1-

这是一个测试该问题的测试用例:
typedef int PropertyGetter(Null object);

void main() {
testTypedef(test1, 2);
testTypedef(test2, 'foo');
}

void testTypedef(PropertyGetter pg, param){
pg(param);
}

int test1(int val) {
print('val:$val');
return val;
}

int test2(String val) {
print('val:$val');
return 0;
}

控制台错误消息:
Unhandled exception:
type 'int' is not a subtype of type 'Null'

最佳答案

您几乎可以肯定不想在这里使用Null作为类型,因为Null类型的参数只能接受null作为参数,这是毫无用处的。

如果要为可以接受任何对象的函数定义typedef,则应使用dynamicObject作为类型。但是,如果使用Object,则需要知道将对象强制转换为哪种类型,然后才能访问基础对象的任何属性。如果您只是想快速解决问题,建议您使用dynamic

关于dart - 使用Null类型参数进行Dart 2.7的Dart迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59975490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com