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

Flutter CastError问题:String无法转为int?致应用启动失败

解决Flutter CastError: String无法转为int的问题

问题原因

你的getInt方法直接用as int?强转缓存值,但_preferenceCache里对应key的实际值是String类型。Dart的as运算符仅做类型兼容性检查,不会自动执行字符串到整数的转换,因此触发类型转换错误。

修复方案

修改getInt方法,先判断值的实际类型,再做对应的转换处理:

int? getInt(String key) {
  final value = _preferenceCache[key];
  if (value is int) {
    return value;
  } else if (value is String) {
    // 用tryParse避免无效字符串导致崩溃,若需严格校验可改用int.parse并捕获异常
    return int.tryParse(value);
  }
  // 其他类型直接返回null
  return null;
}

如果后续遇到类似的double转换问题,可参照同样逻辑修改getDouble方法:

double? getDouble(String key) {
  final value = _preferenceCache[key];
  if (value is double) {
    return value;
  } else if (value is String) {
    return double.tryParse(value);
  }
  return null;
}

为什么添加toString()没用?

你之前尝试的toString()是将值转为字符串,但问题核心是需要把缓存中的字符串转为整数,操作方向完全相反,因此无法解决问题。

额外建议

检查存储逻辑,确保存入整数时使用对应的setInt方法(而非setString),从根源避免缓存中类型不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:50:42