List 列表作为可选构造函数参数在Dart中为空
在下面的示例中,当没有参数传递给构造函数时,为什么List 列表作为可选构造函数参数在Dart中为空,list,flutter,dart,constructor,List,Flutter,Dart,Constructor,在下面的示例中,当没有参数传递给构造函数时,为什么myListnull 我在类中将其声明为空(可增长)列表 class MyListClass { List myList = []; MyListClass({this.myList}); } void main() { final obj = MyListClass(); assert(obj.myList != null); } 传递可选列表但默认为空列表的最佳方式是什么 我知道你可以做到以下几点,但也许有更好的办法 M
myList
null
我在类中将其声明为空(可增长)列表
class MyListClass {
List myList = [];
MyListClass({this.myList});
}
void main() {
final obj = MyListClass();
assert(obj.myList != null);
}
传递可选列表但默认为空列表的最佳方式是什么
我知道你可以做到以下几点,但也许有更好的办法
MyListClass({this.myList}) {
this.myList ??= [];
}
UDATE:
这是预期的行为,
null
如果未根据指定值,则为默认值。编辑:使用初始化器:
class MyListClass {
List myList;
MyListClass({List list}) : myList = list ?? [];
}
编辑:使用初始化器:
class MyListClass {
List myList;
MyListClass({List list}) : myList = list ?? [];
}
您没有将任何内容传递给将值定向到myList的构造函数,这就是为什么会得到null(null==empty)好的,我认为因为它是可选的,所以在没有传递参数时应该保持不变。我更新了我的问题,以找到解决此问题的最佳解决方案。也许。我发布了一个github问题。发布了一个指向该github问题的链接,然后您没有将任何内容传递给将值定向到myList的构造函数,这就是为什么会得到null(null==empty)好的,我认为由于它是可选的,所以在没有传递任何参数时应该保持不变。我更新了我的问题,以找到解决此问题的最佳解决方案。也许。我发布了一个github问题。发布一个指向该github问题的链接,然后这会创建一个不可修改的列表,我想修改它。您可以修改它,但不能将其设置为引用另一个列表,这不是您想要的吗?只是尝试了一下,得到了“未处理的异常:不支持的操作:无法添加到不可修改的列表”这是一个解决方案,但是它有点冗长,如果您想传递空值,就不能传递空值。我仍然感到惊讶的是,我的例子并没有像预期的那样有效。我在dart上提交了一个github问题。我会接受这个答案,因为我的错误是预期的行为。根据这创建了一个不可修改的列表,我想修改它。你可以修改它,但你不能将它设置为引用另一个列表,这不是你想要的吗?只是尝试了一下,然后得到了答案“未处理的异常:不支持的操作:无法添加到不可修改的列表”这是一个解决方案,但它有点冗长,如果需要,您不能传递空值。我仍然很惊讶我的示例没有按预期工作。我在dart上提交了一个github问题。我将接受此答案,因为我的错误是根据的预期行为