首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gridview.builder不会通过setState()更新

GridView.builder是Flutter中用于构建网格布局的一个组件。它可以根据给定的数据源动态生成网格视图,并且可以实现滚动加载和懒加载的效果。

在Flutter中,使用GridView.builder来构建网格布局时,不需要通过setState()来更新视图。GridView.builder是一个无状态的组件,它会根据传入的数据源自动更新视图。

使用GridView.builder的步骤如下:

  1. 定义一个数据源,可以是一个列表或者从网络或数据库获取的数据。
  2. 在GridView.builder的itemCount参数中指定数据源的长度。
  3. 在GridView.builder的itemBuilder参数中定义每个网格项的样式和内容。

示例代码如下:

代码语言:txt
复制
GridView.builder(
  itemCount: data.length,
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
    crossAxisCount: 2, // 每行显示的网格数量
    mainAxisSpacing: 10.0, // 主轴方向的间距
    crossAxisSpacing: 10.0, // 交叉轴方向的间距
  ),
  itemBuilder: (BuildContext context, int index) {
    return Container(
      color: Colors.blue,
      child: Center(
        child: Text(data[index]),
      ),
    );
  },
)

在上述代码中,data是一个包含网格项内容的列表。GridView.builder会根据data的长度自动生成相应数量的网格项,并根据itemBuilder中的定义来渲染每个网格项的样式和内容。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。

  • 腾讯云云服务器(CVM):提供可扩展的计算能力,适用于各种应用场景,包括网站托管、应用程序部署、游戏服务器等。了解更多信息,请访问腾讯云云服务器
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的对象存储服务,适用于存储和管理各种类型的数据,包括图片、音视频、文档等。了解更多信息,请访问腾讯云对象存储
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

React State(状态): React通过this.state来访问state,通过this.setState()方法来更新stateReact State(状态)

this.state来访问state,通过this.setState()方法来更新state。...当this.setState()方法被调用的时候,React会重新调用render方法来重新渲染UI setState异步更新 setState方法通过一个队列机制实现state更新,当执行setState...的时候,会将需要更新的state合并之后放入状态队列,而不会立即更新this.state(可以和浏览器的事件队列类比)。...如果我们不使用setState而是使用this.state.key来修改,将不会触发组件的re-render。...= null,就会造成循环调用,使得浏览器内存占满后崩溃 调用栈 既然setState最终是通过enqueueUpdate执行state更新,那么enqueueUpdate到底是如何更新state的呢?

1.9K30

React源码分析与实现(二):状态、属性更新 -> setState

React源码分析与实现(二):状态、属性更新 -> setState 原文链接地址:https://github.com/Nealyang 转载请注明出处 状态更新 此次分析setState基于0.3...的,所以this.state也就不会更新,同理,在receivePropsAndState的过程中,会把compositeLifeCycleState置成RECEIVING_PROPS状态,也不会执行state...img 属性更新 首先我们知道,属性的更新必然是由于state的更新,所以其实组件属性的更新流程就是setState执行更新的延续,换句话说,也就是setState才能出发组件属性的更新,源码里就是我在处理...通过Constructor来判断组件是否相同,如果相同且组件为非静态,则更新组件的属性,否则卸载当前组件,然后重新mount下一个render组件并且直接暴力更新。...正式通过这种多态的方式,递归的解析每级嵌套组件。最终完成从当前组件到下面的所有叶子节点的树更新

1.2K40

Flutter响应式编程:Streams和BLoC

解释和说明: 第24-30行:我们正在监听stream,每当stream输出一个新的值,我们将用该值更新Text; 第35行:当我们点击FloatingActionButton时,我们递增计数器并通过接收器将其发送到...Stream; 在流中注入值的事实导致侦听它的StreamBuilder重建并“刷新”计数器; 我们不再需要State的概念,所有内容都通过Stream接收; 这是一个很大的改进,因为调用setState...感谢业务逻辑与UI的分离:我们可以随时更改业务逻辑,对应用程序的影响最小, 我们可能会更改UI而不会对业务逻辑产生任何影响, 现在,测试业务逻辑变得更加容易。...现在如果你需要更改业务逻辑,您只需更新方法_handleLogic(第77-80行)。 也许新的业务逻辑会要求做非常复杂的事情...... CounterPage永远不会知道它,这非常好!...这将强制GridView.builder请求显示“最多30个”项目。

4.1K90

Flutter开发-可滚动组件

需要注意的是,通常SingleChildScrollView只应在期望的内容不会超过屏幕太多时使用,这是因为SingleChildScrollView不支持基于Sliver的延迟实例化模型,所以如果预计视口可能包含超出屏幕尺寸太多的内容时...上面我们介绍的GridView都需要一个widget数组作为其子元素,这些方式都会提前将所有子widget都构建好,所以只适用于子widget数量比较少时,当子widget比较多时,我们可以通过GridView.builder...GridView.builder 必须指定的参数有两个: GridView.builder( ......Future.delayed来模拟从异步数据源获取数据,每次获取数据需要200毫秒,获取成功后将新数据添加到_icons,然后调用setState重新构建。...:这两个方法用于跳转到指定的位置,它们不同之处在于,后者在跳转时会执行一个动画,而前者不会

4.5K20

Flutter 绘制探索 4 | 深入分析 setState 重建和更新 | 七日打卡

我们可以发现一个非常重要的地方,那就是 State#setstate 虽然会重建当前 build 方法下的节点,但是 RenderObject 对象是不会重建的,如下 RenderCustomPaint...这里就是通过 built 这个新的Widget 对 _child 进行更新,这个 _child 就是第三节点 SingleChildRenderObjectElement ?...也就是说,使用 setState 进行更新,只是轻量级的配置信息创新创建,而 Element 、RenderObject 、State 这样的对象不会重新创建,只是根据配置信息进行了更新。 ?...这就是在 setState 时进行的 Element 重新构建 和 RenderObject 的更新。...我们应该已经了解到,一般情况下使用 setState 不会让 Element 和 RenderObject 重新创建,而是基于新的 Widget 配置信息进行更新。这差不多就是四两拨千斤吧。 ?

1.8K20

Flutter | 滚动组件,ListView,GridVIew等

需要注意的是,通常 SingleChildScrollView 只应用在期望内容不会超过屏幕太多时使用,这是因为 SingleChildScrollView 不支持 Sliver 的延时实例初始化模型...该属性表示是否将列表项(子组件) 包裹在 AutomaticKeepAlive 组件中; 典型的,在一个懒加载的列表中,如果将列表包裹在 AutomaticKeepAlive 中,在改了吧划出视口时,他也不会被...由于 crossAxisCount 指定后,子元素横轴长度就会确定了,然后通过此参数值就可以确定子元素在主轴上的长度 可以看到,子元素的大小是通过 crossAxisCount 和 childAspectRatio...上面介绍的都需要一个子 Widget数组 作为其子元素,这些方式会提前创建好 widget,只适用于 widget 数量较小的时候,当 widget 比较多的时候,可以通过 GridView.builder...GridView.builder 必须指定的构造参数有两个: GridView.builder( ...

8.5K20
领券