首页 > 解决方案 > GridView 保留所有元素,而不是在屏幕上构建它们

问题描述

我有一个网格视图,它显示了许多不同服务的修复状态,并在服务出现故障时为它们着色和/或自动打开网页。问题是屏幕外的元素没有被检查,这更有效,但在这种情况下不是所需的。

我猜它的行为类似于 android 中的 RecyclerView?

我想构建检查服务运行状况的小部件,即使它们在屏幕上不可见。

目前,直到我将它们滚动到屏幕中的那一刻,服务才开始被检查。

标签: flutterdart

解决方案


假设您当前正在使用GridView.builder构造函数,我建议使用“普通”GridView构造函数(带有children属性)。由于GridView.builder出于效率原因仅构建当前可见的元素,因此未在屏幕上呈现的元素将不会运行您的后端逻辑。

有关更多信息,请参阅官方文档

[GridView.builder] 构造器适用于具有大量(或无限)子级的网格视图,因为仅对那些实际可见的子级调用构建器。

在这里你会找到替代品:

最常用的网格布局是 GridView.count,它创建一个在横轴上具有固定数量的瓦片的布局,以及 GridView.extent,它创建一个具有最大横轴范围的瓦片的布局。


推荐阅读