为什么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
相关产品推荐
相关产品推荐

