我有一个自定义NetworkUtil类,其中包含方法Future get()和Future post()。这两种方法需要使用保存在SharedPreferences中的承载令牌值。此类具有默认构造函数,该构造函数使用以下命令从SharedPreferences中检索此令牌值:
SharedPreferences.getInstance().then((res) {
token = res.getString("token");
});
但这会返回令牌值,因为它返回了Future。
如何才能更快或更早地获得令牌价值?现在,如果调用方法post(),则令牌不会返回jet。
答案 0 :(得分:0)
有点棘手。
您是否可以像下面那样将令牌本身直接注入NetworkUtil
,
class NetworkUtil {
final String token;
NetworkUtil(this.token);
}
//usage:
SharedPreferences prefs = await SharedPreferences.getInstance();
token = prefs.getString("token");
NetworkUtil networkUtil = NetworkUtil(token);
在使用令牌之前先进行null
检查。
class NetworkUtil {
String token;
NetworkUtil() {
SharedPreferences.getInstance().then((res) {
token = res.getString("token");
});
}
Future post(postBody) {
if (token != null) {
} else {
throw Exception("token is not there");
}
}
}