You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Dart中依赖其他静态变量的静态变量修改后不更新

问题核心原因

Dart 中的静态存储变量默认是懒初始化,仅会在第一次被访问时执行一次右侧的赋值表达式,赋值完成后就会将结果固定存储在内存中,后续不会因为依赖的其他变量变更自动重新计算。

你场景下的执行逻辑如下:

  • 第一次调用print(EndPoints.place)时,触发place的初始化,用当时的baseUrl值拼接出someurl.com/api/v1/place存入内存
  • 后续修改baseUrl的操作,不会触发place重新计算赋值,所以第二次打印place时拿到的还是第一次初始化的旧值

解决方案

将place从静态存储变量改为静态 getter,每次访问place时都会实时执行拼接逻辑,自动使用最新的baseUrl值:

class EndPoints {
  static String baseUrl = "someurl.com/";
  // 改为getter,每次访问实时计算
  static String get place => baseUrl + "api/v1/place";
}

内容的提问来源于stack exchange,提问作者Siddy Hacks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:39:04