【问题标题】:StreamBuilder with Cloud Firestore bad practice?带有 Cloud Firestore 的 StreamBuilder 不好的做法?
【发布时间】:2020-09-15 04:54:02
【问题描述】:

这个 StackOverflow 回答 (How to deal with unwanted widget build?) 说小部件在其构建功能中应该没有副作用,并且在使用 StreamBuilder 时,您不应该创建内联流,而是在 StatefulWidget 中的 initState 中进行初始化。

但是,官方 cloud_firestore 文档显示了这个例子:

此示例在构建函数中创建流。

这真的是不好的做法吗,Firestore 团队在这里错了,还是 Firestore 在幕后做了一些我不知道的事情才让这一切正常?

【问题讨论】:

    标签: flutter dart google-cloud-firestore dart-pub


    【解决方案1】:

    这种做法是完全正常的。您链接到的帖子并没有说不要创建Streams 内联。这仅适用于 Futures,并且在 FutureBuidler 类中的 Flutter 文档中已明确说明。

    【讨论】:

    • 流在原则上不是做同样的事情,这会产生副作用吗?
    • @TransmissionsDev 否,因为流旨在提供多个值。
    • StreamBuilder在rebuild的时候会不会自动在stream上调用cancel()之类的,不然每次rebuild的时候不会一直在创建新的stream,会导致内存泄漏吗?
    • @TransmissionsDev 不确定,但垃圾收集器肯定会清理它。对于这些高级语言,内存泄漏并不是真正的问题。
    猜你喜欢
    • 2021-03-03
    • 2021-02-26
    • 1970-01-01
    • 2019-10-28
    • 2020-03-13
    • 2019-07-06
    • 2021-02-04
    • 2018-08-15
    • 2018-05-01
    相关资源
    最近更新 更多