【问题标题】:InitState with setState or FutureBuilder? Which method is better to display data from a database in Flutter?带有 setState 或 FutureBuilder 的 InitState?在 Flutter 中显示数据库中的数据,哪种方法更好?
【发布时间】:2020-08-10 19:36:40
【问题描述】:

我的应用程序显示从ListView 中的 SQLite 数据库收集的数据。我可以使用FutureBuilder 等待获取数据,然后返回 ListView。或者我可以设置一个回调,当我的数据加载到InitState() 中,然后在setState() 中加载数据。在加载数据之前,我能够同时使用这两种方式并显示CircularProgressIndicator。我应该继续在应用的其余部分中使用以下哪种方式更好?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    FutureBuilder 是一个仅构建其子级的小部件,而 setStateinitState 中的回调块内重建整个屏幕。只重建部分小部件树以提高性能总是比在接收到数据时重建整个屏幕要好。

    【讨论】:

    • 除此之外,如果您想更新屏幕的某些特定部分,您可以将其设置为单独的 dart 模块/小部件,并将其包含在您需要的屏幕中。并传递函数和/或使用 GlobalScope 与小部件交换数据。如果屏幕有很多小部件(比如列表视图)并且您一次又一次地更新屏幕,使用 setState 会大大降低您的应用程序性能。一个这样的例子可以是一个音乐播放器,你每秒更新你的音乐进度条,你确实需要每秒重建/计算你的列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2019-04-13
    • 2013-08-15
    • 2013-04-25
    • 1970-01-01
    相关资源
    最近更新 更多