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

西迪黑客

如果我有一个静态变量(比方说 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.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章