oce*_*any 8 flutter flutter-web
当我使用 setState () 文本出现在调试控制台中..
setState() 回调参数返回一个 Future。_LoginActivityState#9cd91 上的 setState() 方法使用返回 Future 的闭包或方法调用。也许它被标记为“异步”。不是在调用 setState() 时执行异步工作,而是首先执行工作(不更新小部件状态),然后在调用 setState() 时同步更新状态。
Future<void> login() async {
final formState = formKey.currentState;
if (formState.validate()) {
formState.save();
try {
final response = await UserController.login({
"username": username,
"password": password,
});
if (response != null && response["success"]) {
setState(() async {
accessToken = response['token'];
//print(token);
if (accessToken != null) {
await Http.setAccessToken("Bearer $accessToken");
}
print('$accessToken');
final getMe = await AiframeworkController.getProfile();
print('data: $getMe');
if (getMe != null && getMe['is_verified'] == true) {
return Navigator.pushReplacement(
context, MaterialPageRoute(builder: (context) => MainActivity()));
} else {
return Center(
child: CircularProgressIndicator(),
);
}
});
}
} catch (e) {
print(e.message);
}
}
Run Code Online (Sandbox Code Playgroud)
}
小智 6
setState() 应该仅用于设置有状态小部件的新状态。您不应该在其中执行异步操作,也不应该从中返回任何内容。我假设 'accessToken' 是您要更改其状态的字段,因此最好在 setState() 之外执行所有其他操作并将其留'accessToken = response['token'];'
在内部。
归档时间: |
|
查看次数: |
12157 次 |
最近记录: |