gpt4 book ai didi

dart - 如何在类构造函数中为 Map 类型变量分配默认值?

转载 作者:IT王子 更新时间:2023-10-29 06:42:48 30 4
gpt4 key购买 nike

我正在尝试创建一个类构造函数,其中唯一的参数是 Map 类型。

class ProductManager extends StatefulWidget {
final Map initialProduct;

ProductManager(this.initialProduct = {'title': '', 'image': ''});

}

我遇到了这两个错误:

Named parameters must be enclosed in curly braces ('{' and '}').dart(named_parameter_outside_group)


Default values of an optional parameter must be constant.dart(non_constant_default_value)

按照以下方式更改我的代码,我解决了第二个错误:

ProductManager(this.initialProduct =  const {'title': '', 'image': ''});

我做错了什么?为什么 Map 变量与其他类型不同?

最佳答案

如果你给可选的命名参数一个默认值,如下所示,你将无法修改你的默认常量映射

class MyClass {
Map myMap;

MyClass({this.myMap = const {}});
}

main() {
MyClass a = MyClass();
a.myMap[0]=1; // Throw error
}

代码会抛出这个错误,因为你不能修改常量:

Uncaught Error: Unsupported operation: Cannot modify unmodifiable Map

要解决此问题,您可以在创建 MyClass 实例时初始化 myMap 值。

class MyClass {
Map myMap;

MyClass({this.myMap = const {}});
}

main() {
MyClass a = MyClass({}); // Provide a non const map
a.myMap[0]=1; // Will work
}

或者你也可以在构造函数中不填默认值,直接调用属性或函数改变map的值

class MyClass {
Map myMap = {}; // Provide an empty map

MyClass(); // Don't provide a default constructor
}

main() {
MyClass a = MyClass();
a.myMap[0]=1; // Will work
}

关于dart - 如何在类构造函数中为 Map 类型变量分配默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55839472/

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