因为容器小部件有一个约束实例变量。但是构造函数也有一个约束参数。
在initializor列表中,我们可以看到如下代码:
constraints = (****) constraints;那么,我们如何知道哪些约束是对实例变量的引用,哪些约束是对函数参数的引用?

发布于 2021-06-29 10:18:41
名称冲突在构造函数初始化程序列表中不是问题。每个初始化的左侧可能只是一个成员变量.来自Dart语言规范
初始程序列表 初始化程序列表以冒号开头,由以逗号分隔的单个初始化程序列表组成. ..。 表单v= e的初始化器与表单.v=e的初始化器等效,这两种表单都称为实例变量初始化器。
同时,this因此永远不能引用一个成员变量。因此:
class Foo {
int x;
Foo(int x) : x = x;
}没有歧义:成员变量x是从x参数初始化的。
但是,名称冲突在构造函数体中可能是一个问题,但是:
class Foo {
int x;
Foo(int x) : x = x {
x *= 10; // This modifies the local `x` parameter.
}
}在这种情况下,如果构造函数体需要使用成员变量,而不是同名的参数,则必须小心显式使用this.x。
https://stackoverflow.com/questions/68176209
复制相似问题