Flutter 使用setState或FutureBuilder初始化状态?在颤振中,哪种方法更适合显示数据库中的数据?
我的应用程序在Flutter 使用setState或FutureBuilder初始化状态?在颤振中,哪种方法更适合显示数据库中的数据?,flutter,dart,Flutter,Dart,我的应用程序在列表视图中显示从SQLite数据库收集的数据。我可以使用FutureBuilder等待获取数据,然后返回ListView。或者我可以将回调设置为当数据加载到InitState()中时,然后将数据加载到setState()。在加载数据之前,我可以使用这两种方法显示循环压缩器指示器。以下哪种方法更好,我应该在应用程序的其余部分继续使用?FutureBuilder是一个只构建其子级的小部件,而initState中回调块内的setState则重建整个屏幕。只重建小部件树的一部分以提高性能总
列表视图中显示从SQLite数据库收集的数据。我可以使用FutureBuilder
等待获取数据,然后返回ListView。或者我可以将回调设置为当数据加载到InitState()
中时,然后将数据加载到setState()
。在加载数据之前,我可以使用这两种方法显示循环压缩器指示器。以下哪种方法更好,我应该在应用程序的其余部分继续使用?FutureBuilder
是一个只构建其子级的小部件,而initState
中回调块内的setState
则重建整个屏幕。只重建小部件树的一部分以提高性能总是比在收到数据时重建整个屏幕要好。FutureBuilder
是一个只构建其子部件的小部件,而initState
中回调块内的setState
则重建整个屏幕。为了提高性能,最好只重建小部件树的一部分,而不是在收到数据时重建整个屏幕。此外,如果您想更新屏幕的某些部分,可以将其作为单独的dart模块/小部件,并将其包含在需要的屏幕内。和传递函数和/或使用GlobalScope与小部件交换数据。如果屏幕上有很多小部件(比如列表视图),并且你一次又一次地更新屏幕,那么使用setState会严重降低你的应用程序性能。一个这样的例子可以是音乐播放器,在那里你每秒更新你的音乐进度条,你确实需要每秒重建/计算你的列表。除此之外,如果你想更新屏幕的某些部分,你可以将其作为一个单独的dart模块/小部件,并将其包含在你需要的屏幕内。和传递函数和/或使用GlobalScope与小部件交换数据。如果屏幕上有很多小部件(比如列表视图),并且你一次又一次地更新屏幕,那么使用setState会严重降低你的应用程序性能。一个这样的例子可以是一个音乐播放器,你每秒钟更新你的音乐进度条,你确实需要每秒钟重建/计算你的列表。