flutter - Flutter:调用“嵌套未来”的正确方法
问题描述
在 Flutter 中调用嵌套未来的最佳方法是什么?还是一般的颤动?
在我的应用程序中,我必须获取当前用户(其数据位于final storage = new FlutterSecureStorage();
.
从这个用户,我调用了一个用户 id的 API 。这两个部分独立工作正常(很慢,但这是另一回事)。
在许多屏幕上,我必须调用异步函数,我通过使用来做到这一点Future.delayed
,而我的同事习惯于使用这样的东西:
void initState() {
super.initState();
getCurrentUser();
}
void getCurrentUser() async {
user = await UserAuth.getCurrentUser();
}
这是我的嵌套期货。我需要在我的 initState 上加载当前用户来加载我的出版物。我必须在其中获取用户,因为它也可以是非当前用户(此功能将用于检索当前用户以及其他用户的出版物)。
class _UserPublicationsState extends State<UserPublications> {
List<Publication> listPublications;
List<Widget> list = [];
User user;
@override
void initState() {
super.initState();
Future.delayed(Duration.zero, () async {
await UserAuth.getCurrentUser().then((value) {
setState(() {
user = value;
UserWS.getPublicationsPerUsers(user).then((value) {
setState(() {
listPublications = value;
});
});
});
});
});
}
@override
Widget build(BuildContext context) {
if (listPublications == null) {
return FullPageLoading();
}
String title = "title";
return SafeArea(
child: Scaffold(
appBar: getSimpleAppBar(context, title),
body: SingleChildScrollView(
child: getSavedPublications(),
),
),
);
}
}
解决方案
我不确定你的方法是什么,但你可以把你的未来放在 Future.wait() 的列表中
像这样:
Future.wait([
Future.delayed(Duration.zero),
Future.delayed(Duration.zero),
]);
如果您的意思是未来取决于另一个未来,您应该在未来调用之后使用 .then()
像这样:
Future.delayed(Duration.zero).then((value) => Future.delayed(Duration.zero));
我希望这就是你要找的
推荐阅读
- c++ - [Boost::ext].SML:在操作中访问 SM 和依赖项
- awk - 如何使用 AWK 将 CSV 文件转换为 TOML 哈希表
- java - 将主要用户从一个 Spring Boot 微服务传递到另一个 Spring Boot 微服务
- spss - 以 SPSS 长格式折叠数据
- ios - SWIFTUI:防止在 TextField 中按下返回键时键盘关闭
- php - 在 php 中编写可变产品 (woocommerce)
- android - 如何修复 Google Api 错误:禁止:将应用程序上传到 Play 商店时,Android App Bundle 使用错误的密钥签名
- python - 是否有一种“魔术方法”可以通过 instance[0] 而不是 instance.list[0] 访问在类中定义的列表?
- r - 为什么 ggplot2 会根据 coord_map 的 xlim 生成地图偏移量?
- javascript - 使用 componentDidUpdate 自动滚动到锚标记元素