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

Sid*_*cks 0 static-variables dart flutter

如果我有一个静态变量(假设是 foo),其值从另一个静态变量继承,后来我更改了另一个静态变量的值,然后尝试访问 foo ,它仍然给出初始化时使用的旧值。

我有一个包含以下代码的文件endpoints.dart

class EndPoints {

  static String baseUrl = "someurl.com/";

  static String place = baseUrl + "api/v1/place";

}
Run Code Online (Sandbox Code Playgroud)

在这里,如果我更改任何其他文件中的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
}
Run Code Online (Sandbox Code Playgroud)

我担心的是为什么static String place = baseUrl + "api/v1/place" 不采用更新后的baseUrl值。

Pet*_*tai 5

静态成员place在改变时不会被重新计算baseUrl。您可以像这样定义自定义 getter 函数:

class EndPoints {
  static String baseUrl = "someurl.com/";
  static String get place => baseUrl + "api/v1/place";
}
Run Code Online (Sandbox Code Playgroud)

通过此更改,您的代码将输出place更新后的值。另外,您的代码中有一个拼写错误,EndPoint.baseUrl应该是EndPoints.baseUrl.