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

