gpt4 book ai didi

dart - 可选参数的默认值必须是常量

转载 作者:行者123 更新时间:2023-12-02 16:51:51 27 4
gpt4 key购买 nike

一段时间以来我一直在尝试解决这个问题,但无法找出问题所在。

enum MyEnum { a, b }

class ClassA {
final MyEnum myEnum;
ClassA({this.myEnum = MyEnum.a});
}

class ClassB {
final ClassA classA;
ClassB({this.classA = ClassA()}); // ClassA expression is underlined with red
}

IDE(Visual Studio Code)提示:

[dart] Default values of an optional parameter must be constant.

我尝试用 constnew 作为前缀,并将值传递给 ClassA 构造函数,但没有任何效果。谁能看到我在这里做错了什么吗?

最佳答案

尝试

enum MyEnum { a, b }

class ClassA {
final MyEnum myEnum;
ClassA({this.myEnum});
}

class ClassB {
final ClassA classA;
ClassB({this.classA}); // ClassA expression is underlined with red
}

不需要“=”运算符。当您将值传递给构造函数时,它会自动分配该值。

仅当您需要将默认值传递给变量时才使用“=”运算符,从而使它们成为可选参数。

编辑

enum MyEnum { a, b }

class ClassA {
final MyEnum myEnum;
const ClassA({this.myEnum = MyEnum.a});
}

class ClassB {
final ClassA classA;
ClassB({this.classA = const classA()}); // ClassA expression is underlined with red
}

这是我能找到实现你想要的效果的唯一方法,构造函数应该是默认的

这称为 canonicalized构造函数。

关于dart - 可选参数的默认值必须是常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51907159/

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