【问题标题】:Flutter Listview items not renderingFlutter Listview 项目未呈现
【发布时间】:2021-05-18 19:50:46
【问题描述】:

我所做的是从 Firebase 获取项目,然后将它们保存在列表中,然后将它们显示在 ListView 中。我现在遇到的问题是我检查列表是否有项目,如果有,它会显示我的 ListView 和项目,如果没有项目,它会显示文本,但即使 有些项目会显示文本,但按下热重载后会显示项目。

我的猜测是小部件的整体状态存在问题,因为像 SetState 这样的东西没有效果或刷新指示器

【问题讨论】:

    标签: flutter listview flutter-layout state statefulwidget


    【解决方案1】:

    StreamBuilder 关注你的masterListStart().asStream 而不是masterList 流有什么原因吗?我不是说这是错误的,只是不是很明显。

    无论哪种方式,它都不会自动重建,因为您的 displayStory 方法中唯一对流有反应的部分直到满足非空列表条件后才会构建。如果不实施反应式状态管理解决方案,您的代码中不会自动通知任何侦听器storysList 的状态已更改,这意味着没有任何内容会触发重建。这就是为什么您必须热重载才能看到更改的原因。

    不用我深入了解您的代码,请尝试在 displayStory 方法的顶层返回 StreamBuilder 并将所有条件放入其 builder 方法中。

    【讨论】:

    • 首先感谢您的回答,关于您所说的关于流构建器的事情,我这样做是因为我在 YouTube 上看到了这样的内容,但不知道我可以做些什么不同的。关于您建议的第二件事,我一定会尝试并及时更新谢谢
    • 我爱你它有效,我无法告诉你我必须投入多少时间,因为我尝试使用 set state,然后我想到了 statemangemnt,但 statemangemnt 对我来说太复杂了等等。跨度>
    • 很高兴它成功了。我建议阅读 this article 关于清理 Firestore 代码的内容。您的 UI 代码中有大量逻辑,这将有助于清理它们。通常,花时间学习状态管理解决方案只会让你更容易前进。 Provider 或 GetX 实际上并不比学习如何使用 Firestore 复杂。
    • 谢谢,我一定会看看 Statemanagment,因为我也有第二个问题,即 streambuilder 在更新项目时复制项目我希望状态管理能解决这个问题
    • 我应该使用 Statemanagment,因为我可以告诉 App 哪些 Widget 发生了变化以及应该做什么?
    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 2019-03-17
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多