所以基本上我有一个 Future,它返回我从安全存储中获得的 jwt,并且我想将返回值分配给一个变量,假设该变量是令牌。事情是这样的。
Future<String> getJwt() async {
final secureStorage = SecureStorage();
var jwt = await secureStorage.readSecureData('jwt');
return jwt;
}
Run Code Online (Sandbox Code Playgroud)
我想分配给变量,就像这样。
static String token = getJwt();
Run Code Online (Sandbox Code Playgroud)
代码是这样的。
String? _token;
Future<String> getJwt() async {
final secureStorage = SecureStorage();
var jwt = await secureStorage.readSecureData('jwt');
return jwt;
}
void getJWT() async {
String token = await getJwt();
}
class API {
final token = getJWT();
static Future<String> getData(String url) async {
try {
http.Response response = await http.get(Uri.parse(baseURL + url),
headers: {
"Content-type": "application/json",
"Authorization": 'Bearer ' + token
});
return response.body;
} catch (_) {
return 'error';
}
}
static Future<String> postData(String url, String json) async {
try {
http.Response response = await http.post(Uri.parse(baseURL + url),
headers: {
"Content-type": "application/json",
'Authorization': 'Bearer ' + token
},
body: json);
return response.body;
} catch (_) {
return 'error';
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将 String 更改为 Future 但它不起作用,如何解决这个问题?提前致谢。
所以你需要一个异步函数来做到这一点。我知道有两种方法:
async/awaitthen例子:
// use async await
void main() async {
String ret = await getAbc();
print("ret: $ret");
// ----- result -----
// ret: abc
}
// use then
void main2() {
getAbc().then((String ret) {
print("ret: $ret");
});
// ----- result -----
// ret: abc
}
Future<String> getAbc() async {
await Future.delayed(Duration(seconds: 1));
return "abc";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4841 次 |
| 最近记录: |