在未来的职业之间传递令牌



我一直在阅读多个关于在期货之间传递数据的线程,但出于某种原因,我可以让它发挥作用。:(

我有两个未来,第一个未来是进行后请求以检索令牌

Future<AuthStart> fetchAuthStart() async {
final response = await http.post(
Uri.parse('http://ipsum.com/auth/start'),
body: jsonEncode(<String, String>{
'IdNumber': '198805172387',

}));
if (response.statusCode == 200) {
final responseJson = jsonDecode(response.body);
return AuthStart.fromJson(responseJson);
} else {
throw Exception("Failed");
}
}

这个请求将生成一个GUID,我在下一次中需要它

Future<AuthStatus> fetchAuthStatus(String token) async {
final response = await http.post(Uri.parse('http://ipsum/auth/status'),
body: jsonEncode(<String, String>{
'Token':token,
}),
);
if (response.statusCode == 200) {
return AuthStatus.fromJson(jsonDecode(response.body));
} else {
throw Exception("Failed");
}
}

我尝试了多种方法,其中一种有效的方法是在我的FutureBuilder中传递变量,比如这个

FutureBuilder(
future: futureAuthStart,
builder: (context, snapshot) {
if (snapshot.hasData) {
fetchAuthStatus(snapshot.data!.Token);
return Text(snapshot.data!.Token);
} else if (snapshot.hasError) {
return Text('${snapshot.error}');
}
return const CircularProgressIndicator();
},
),

但这没有道理吗?我宁愿在我的InitState中传递这样的信息。

void initState() {
super.initState();
futureAuthStart = fetchAuthStart();
futureAuthStatus = fetchAuthStatus(token);

}

我是不是完全走错了路?有什么教程可以提供更好的信息:(?提前谢谢。

创建一个void函数并将函数传递给它,一次传递一个函数,它将使用async/await执行。您应该了解异步编程:futures、async、await。

void initState() {
super.initState();
_onInit();
}

void _onInit() async {
try {
var futureAuthStart = await fetchAuthStart();
var futureAuthStatus = await fetchAuthStatus(futureAuthStart.data.token);
}catch(e, stackTrace){
//handler error
print(e);
print(stackTrace);
}
}

相关内容

  • 没有找到相关文章

最新更新