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

Flutter中无法从SharedPreferences获取完整API Token问题

Flutter SharedPreferences存储Token末尾缺失问题解决

可能的原因及解决方法

1. 改用getString()替代get().toString()

你的获取代码中用get('bearer_token').toString()存在潜在问题:如果存储的值为null,toString()会得到字符串"null"而非空字符串;更关键的是,get()返回Object?,直接调用toString()可能在边缘场景下导致异常或截断。规范写法能彻底避免这类问题:

SharedPreferences prefs = await SharedPreferences.getInstance();
token = prefs.getString('bearer_token') ?? '';

2. 验证存储前的Token完整性

先确认接口返回的Token本身是否完整——有可能是response.data!.accessToken就已经被截断了。在存储前打印验证:

final rawToken = response.data!.accessToken ?? '';
print('接口返回的Token: $rawToken');
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString("bearer_token", rawToken);

3. 存储后立即验证

存储完成后立刻获取并打印,排查是否是存储环节出了问题:

await prefs.setString("bearer_token", rawToken);
final savedToken = prefs.getString('bearer_token');
print('存储后的Token: $savedToken');

如果这里打印的Token完整,说明后续获取时的问题可能来自其他代码逻辑(比如其他地方修改了该Key的值)。

4. 清理App缓存重试

测试阶段可能存在旧缓存干扰,尝试清理App的数据后重新运行,再验证Token存储和获取是否正常。

5. 排查其他代码修改

检查项目中是否有其他地方调用了prefs.setString("bearer_token", ...)或prefs.remove("bearer_token"),避免Token被意外覆盖或删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:40:34