使用静态变量初始化的静态变量不会更新
Static variables initialised using static variables are not updating
如果我有一个静态变量(比方说 foo),它的值继承自另一个静态变量,后来我更改了另一个静态变量的值,然后尝试访问foo,它仍然给出它初始化时使用的旧值。
我有一个包含以下代码的文件 endpoints.dart
class EndPoints {
static String baseUrl = "someurl.com/";
static String place = baseUrl + "api/v1/place";
}
此处如果我更改任何其他文件中的 baseUrl 并像
一样打印它
onPressed () {
print(EndPoints.place);
//prints someurl.com/api/v1/place
EndPoint.baseUrl = "changedurl.com/";
print("${EndPoints.baseUrl}");
//prints changedurl.com/
print("${EndPoints.place}");
//still prints someurl.com/api/v1/place
}
我担心的是为什么 static String place = baseUrl + "api/v1/place"
没有采用更新后的 baseUrl
值。
静态成员 place
在更改 baseUrl
时不会重新计算。您可以像这样定义自定义 getter 函数:
class EndPoints {
static String baseUrl = "someurl.com/";
static String get place => baseUrl + "api/v1/place";
}
通过此更改,您的代码将输出具有更新值的 place
。另外,您的代码中有一个错字,EndPoint.baseUrl
应该是 EndPoints.baseUrl
.
您更改了 baseUrl
的值,您没有触及 place
。你可以尝试写一个setter:
void setBaseUrl(String value) {
this.baseUrl = value;
this.place = baseUrl + "api/v1/place";
}
如果我有一个静态变量(比方说 foo),它的值继承自另一个静态变量,后来我更改了另一个静态变量的值,然后尝试访问foo,它仍然给出它初始化时使用的旧值。
我有一个包含以下代码的文件 endpoints.dart
class EndPoints {
static String baseUrl = "someurl.com/";
static String place = baseUrl + "api/v1/place";
}
此处如果我更改任何其他文件中的 baseUrl 并像
一样打印它onPressed () {
print(EndPoints.place);
//prints someurl.com/api/v1/place
EndPoint.baseUrl = "changedurl.com/";
print("${EndPoints.baseUrl}");
//prints changedurl.com/
print("${EndPoints.place}");
//still prints someurl.com/api/v1/place
}
我担心的是为什么 static String place = baseUrl + "api/v1/place"
没有采用更新后的 baseUrl
值。
静态成员 place
在更改 baseUrl
时不会重新计算。您可以像这样定义自定义 getter 函数:
class EndPoints {
static String baseUrl = "someurl.com/";
static String get place => baseUrl + "api/v1/place";
}
通过此更改,您的代码将输出具有更新值的 place
。另外,您的代码中有一个错字,EndPoint.baseUrl
应该是 EndPoints.baseUrl
.
您更改了 baseUrl
的值,您没有触及 place
。你可以尝试写一个setter:
void setBaseUrl(String value) {
this.baseUrl = value;
this.place = baseUrl + "api/v1/place";
}