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

Dart中如何在函数内为全局变量赋值并在其他函数中使用

Dart空安全下全局变量赋值异常解决方案

你提供的代码输出null的核心问题是没有主动执行varcheck()赋值函数,Dart中可空类型的全局变量默认初始值为null,赋值逻辑未触发的情况下读取自然得到null值。

方案1:调用赋值函数后读取(保留可空类型)

double? latitude;
double? longitude;

void varcheck(){
  latitude=33;
  longitude=44;
}

void main() {
  // 先触发赋值逻辑
  varcheck();
  print(latitude); // 输出33.0
  print(longitude); // 输出44.0
}

如果需要在其他函数中读取这两个变量,只需要确保读取前已经调用过varcheck()完成赋值即可。

方案2:使用late关键字避免可空判断

如果确定变量在使用前一定会完成赋值,可以用late修饰变量,既符合空安全规则,又不需要后续每次使用都做非空校验:

late double latitude;
late double longitude;

void varcheck(){
  latitude=33;
  longitude=44;
}

void main() {
  varcheck();
  print(latitude); 
  print(longitude);
}

注意事项

  • late修饰的变量如果在首次读取前没有完成赋值,运行时会抛出LateInitializationError异常,需要保证赋值逻辑的执行顺序优先于读取逻辑。
  • 全局变量本身为全局作用域,只要完成赋值,所有函数中都可以直接读取到更新后的值,不需要额外的参数传递。

内容的提问来源于stack exchange,提问作者Rasool Zada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:06