使用静态变量初始化的静态变量不会更新

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";
}