栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何转换流 列出

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何转换流 列出

首先,考虑一下:此函数必须很快返回。所有功能都可以,否则UI会挂起。但是,您期望函数返回来自互联网的内容。这需要时间。该函数必须返回。函数无法简单地进行网络请求并返回结果。欢迎来到异步编程的世界。

此外,您拥有的流不是

documentSnapshot
s 流(可以转换为
UserTask
s),而是
QuerySnapshot
s
流(可以转换为
List<UserTask>
s)。注意那里的复数。如果您只想
UserTask
一次获得所有s,则应使用
Future
而不是
Stream
。如果您想
UserTask
在每次更改后重复获得所有s,那么使用一个
Stream
有意义的方法。

既然您说过要获取

List<UserTask>
,我假设您只想获取的集合
UserTask
一次。

因此,您的代码将变成这样:

  Future<List<UserTask>> getUserTaskList() async {    QuerySnapshot qShot =       await Firestore.instance.collection('userTasks').getdocuments();    return qShot.documents.map(      (doc) => UserTask( doc.data['id'], doc.data['Description'], etc...)    ).toList();  }  main() async {    List<UserTask> tasks = await getUserTaskList();    useTasklist(tasks); // yay, the list is here  }

现在,如果您真的想使用流,请按以下步骤操作:

  Stream<List<UserTask>> getUserTaskLists() async {    Stream<QuerySnapshot> stream =       Firestore.instance.collection('userTasks').snapshots();    return stream.map(      (qShot) => qShot.documents.map(        (doc) => UserTask( doc.data['id'], doc.data['Description'], etc...)      ).toList()    );  }  main() async {    await for (List<UserTask> tasks in getUserTaskLists()) {      useTasklist(tasks); // yay, the NEXT list is here    }  }

希望能帮助到你。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387594.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号