Flutter获取token时遇Future<String>无法赋值给String变量问题求助
问题原因
你调用SharedPreferences的getString方法时,这个方法是异步操作,返回的是Future<String>类型,而你试图把它直接赋值给一个String类型的变量,类型不匹配导致了这个错误。
解决方法
方法1:使用async/await(推荐)
在包含这段代码的函数前加上async关键字,用await等待异步操作完成,就能拿到实际的String值:
Future<void> getToken() async { SharedPreferences prefs = await SharedPreferences.getInstance(); String token = await prefs.getString(Constant.tokenKey); // 此处编写使用token的逻辑 }
注意:await只能在标记为async的函数中使用,该函数的返回类型会变为Future(比如示例中的Future<void>)。
方法2:使用then回调处理异步结果
如果不想用async/await,也可以通过then方法处理异步返回的结果:
void getToken() { SharedPreferences.getInstance().then((prefs) { String token = prefs.getString(Constant.tokenKey); // 此处编写使用token的逻辑 }); }
这里的逻辑会在异步操作完成后执行,此时拿到的token就是String类型。
内容的提问来源于stack exchange,提问作者sharon
相关产品推荐
相关产品推荐

