Flutter中无法从SharedPreferences获取完整API 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
相关产品推荐
相关产品推荐

