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

当在一个子对象上调用setState时,Flutter GridView.count会收缩

在Flutter中,GridView.count是一个用于显示网格布局的组件。它可以根据指定的列数,在水平方向上排列子对象。当在一个子对象上调用setState时,GridView.count会重新构建整个网格布局,并根据新的状态重新绘制子对象。

在调用setState后,Flutter会重新调用build方法来构建整个网格布局。由于GridView.count是根据列数来排列子对象的,当子对象的状态发生变化时,可能会导致网格布局的大小发生变化。如果新的状态导致网格布局的大小小于之前的大小,那么GridView.count会收缩以适应新的大小。

收缩的过程是通过重新计算每个子对象的位置和大小来实现的。GridView.count会根据新的网格布局大小重新计算每个子对象的位置,并将多余的子对象进行收缩或隐藏。

优势:

  1. 灵活性:GridView.count可以根据指定的列数自动排列子对象,适用于展示大量数据的情况。
  2. 响应式:当子对象的状态发生变化时,可以通过调用setState来更新网格布局,实现动态的UI效果。

应用场景:

  1. 图片展示:可以使用GridView.count来展示图片墙或相册,根据列数自动排列图片。
  2. 商品展示:适用于电商应用中展示商品列表的场景,可以根据列数自动排列商品卡片。

推荐的腾讯云相关产品: 腾讯云提供了一系列云计算相关的产品和服务,其中与Flutter开发相关的产品包括云服务器、云数据库、云存储等。以下是一些推荐的腾讯云产品和产品介绍链接地址:

  1. 云服务器(CVM):提供可扩展的计算能力,支持多种操作系统和应用场景。了解更多:云服务器产品介绍
  2. 云数据库 MySQL 版(CDB):提供高性能、可扩展的关系型数据库服务,适用于各种应用场景。了解更多:云数据库 MySQL 版产品介绍
  3. 对象存储(COS):提供安全可靠的云端存储服务,适用于存储和管理各种类型的数据。了解更多:对象存储产品介绍

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flutter》-- 6.高级组件

6.1.1 Scrollable组件 在Flutter中,个可滚动的组件直接或间接包含个Scrollable组件,它是可滚动组件的基础组件。...对象,控制滚动位置和监听滚动事件 this.physics,//用于接收个ScrollPhysics对象,可以决定滚动组件响应用户操作的方式 @required this.viewportBuilder...CustomScrollView作为容器组件,子组件不能是ListView、GridView等可滚动组件,造成滚动冲突。...bool addAutomaticKeepAlives = true,//是否将列表项包裹在AutomaticKeepAlive组件中,默认值为true,表示列表项滑出视图窗口不会被垃圾回收,保存之前的状态...ListView.builder特有的属性: 1)itemBuilder:用于构建列表项的可见子组件构建器,只有索引>= 0且< itemCount才会被调用; 2)itemCount:列表项的数量,

10.6K20
  • 半小时带你入门 Flutter

    RendObject才是真正经过layout和paint并绘制在屏幕对象。...,继承自StateFulWidget,意味着这个类拥有个state对象,该对象里的些字段影响app的UI // 这个类是state的些配置项。...(() { // setState方法告诉Flutter,这个State中有些值发生了变化,以便及时将新值更新到UI, // 如果我不通过setState更改_count字段,...) { // build方法会在每次setState的时候重新运行,例如上面的_incrementCounter方法被调用 //Flutter已经被优化了重新构建的方法,所以你只会去更新需要去更新的部分...GridView 可滚动的网格布局,理解为display:grid GridView提供两个预制list,当GridView检测到内容太长自动滚动。

    1.7K20

    Flutter | 滚动组件,ListView,GridVIew等

    可滚动组件 当组件内容超过当前显示视口(ViewPort),如果没有特殊处理,Flutter 就会提示 Overflow 错误,为此,Flutter 提供了多种可滚动组件,用于显示列表和长布局; 可滚动组件都直接或间接的包含个...默认情况下,Flutter 根据具体的平台分别使用不同的 ScrollPhysics 对象,应用不同的显示效果,在 IOS 上会出现弹性效果,而在 android 则会出现微光效果,如果你想在所有的平台下使用同个效果...为此,Flutter 中提出了个 Sliver(薄片) 概念,只有当 Sliver 出现在视口才会去构建他,这种模型也被称为 基于 Sliver 的延时构建模型 。...当列表滚动到具体的 index 位置,会调用该构建起构建列表项。...setState 重新构建 在 itemBuilder 中,如果是最后个,并且小于200 则加载数据,大于 200 之后则不加载数据 Pub 上有flutter_staggered_grid_view

    8.5K20

    Flutter从入门到能寄几玩儿

    RendObject才是真正经过layout和paint并绘制在屏幕对象。...,继承自StateFulWidget,意味着这个类拥有个state对象,该对象里的些字段影响app的UI // 这个类是state的些配置项。...(() { // setState方法告诉Flutter,这个State中有些值发生了变化,以便及时将新值更新到UI, // 如果我不通过setState更改_count字段,...) { // build方法会在每次setState的时候重新运行,例如上面的_incrementCounter方法被调用 //Flutter已经被优化了重新构建的方法,所以你只会去更新需要去更新的部分...GridView 可滚动的网格布局,理解为display:grid GridView提供两个预制list,当GridView检测到内容太长自动滚动。

    1.5K10

    Flutter可滑动组件

    Flutter可滑动组件 1. ListView 1.1 ListView介绍 移动端数据量比较大般都是通过列表来进行展示的,比如商品数据、聊天列表、通信录、朋友圈等。...1.3 ListTile 在开发中,我们经常见到种列表,有个图标或图片(Icon),有个标题(Title),有个子标题(Subtitle),还有尾部个图标(Icon)。...当子Widget即将被展示到屏幕中,itemBuilder函数才会被调用。...() 在上面使用默认构造器创建GridView,需要传入gridDelegate对象。...比如视图滚动到底部,我们可能希望做上拉加载更多;比如滚动到定位置显示个回到顶部的按钮,点击回到顶部的按钮,回到顶部;比如监听滚动什么时候开始,什么时候结束; 在Flutter中监听滚动相关的内容由两部分组成

    7.1K30

    Flutter | 和小老弟起玩转Widget

    **这是因为在实际渲染,UI 的每个 Element 节点都会对应个Widget对象。...createElement() Flutter Framework在构建UI树调用此方法生成对应节点的 Element 对象,此方法是 Flutter Framework 隐私调用的。...其 setState() 方法通知 Flutter framework状态发送改变,Flutter framework在收到消息后,重新调用其 build 方法重新构建 widget 树,从而达到更新...widget 示例在重新构建可能变化,但 State 实例只会在第次插入到树中被创建,当在重新构建,如果 widget 被修改了,Flutter framework 会动态设置State,...State生命周期 initState() 当 Widget 第次插入到 Widget树调用。对于每个 State 对象Flutter framework只会调用次回调。

    90120

    Flutter 布局常用的 widgets(Common layout widgets)

    Container 小结: 添加 padding, margins, 和边界(borders) 能够更好背景颜色和图片 包含个单独的子widget,这个子widget可以是Row、Column或个widget...GridView 小结: 将多个widget放进个表格中 当超出渲染范围,自动提供滚动功能 可自定义格子,也可用下面提供的2种 GridView.count 指定列的数目 GridView.extent...当内容超过渲染范围,自动提供滚动的功能。...Stack 小结: 用来在当前widget上面再盖上层widget Stack children中的第个widget放在最下,后面的widget层层盖上去 Stack的内容不支持滚动 可以裁剪超出范围的子...Card Card来自Material组件库,可包含些数据,通常用ListTile来组装。Card只有个子widget,可以是column、row、list、grid或其它组合widget。

    1.3K30

    Widget中的state到底是什么

    _imageInfo属性用来给Widget加载真实的图片,旦State对象通过_handleImageChanged方法监听到_imageInfo属性发生了变化,就会立即调用_ImageState类的...StatelessWidget是静态的,旦创建则无需更新;而对于StatefulWidget来说,在State类中调用setState方法更新数据,触发视图的销毁和重建,也将间接地触发每个子Widget...这里你可能会有疑问,如果我在个默认不可变的场景下使用StatefulWidget,那么我肯定不会主动调用setState方法啊,如果我不主动调用setState,那么不就不会影响StatefulWidget...但是实际,即使你不去主动setState,StatefulWidget在特定的时机也rebuild的,这点我在下篇文章中会做详细介绍。...如果某个子Widget的重建涉及到些耗时操作,那页面的渲染性能将会急剧下降。

    2.9K20

    Flutter进阶之实现动画效果(

    篇文章我们了解了Flutter的动画基础,这篇文章我们就来实现个图表的动画效果。...通过定义用户界面的不可变的控件树,修改用户界面的唯方法是重建树,当下帧到期告诉Flutter个子树所依赖的些状态已经改变了。...当发生这种情况,_MyHomePageState将构建个稍微不同的子树,这个子树以新的MyHomePage实例为根。...每当发生这种情况,我们可以像以前调用setState并更新_MyHomePageState。...当该State对象永远不会再次构建,该框架调用此方法 框架调用dispose后,该State对象被视为已卸载,并且mounted属性为false,此时调用setState个错误 生命周期的这个阶段是终点

    1.2K41

    Flutter 简易新闻项目目标效果对比简介代码代码地址

    目标 使用flutter快速开发 Android 和 iOS 的简易的新闻客户端 API使用的是 showapi(易源数据) 加载热门微信文章 效果对比 Android iOS image image...image image image image 简介 这是个建议的新闻客户端 页面非常简单 通过网络请求加载 分类数据 和 分类详情数据 (key都在代码里了,轻量使用~) UI几乎是没有任何特点...: ^0.1.6 #webview shared_preferences: ^0.4.2 #持久化数据 url_launcher: ^3.0.3 #调用系统浏览器...代码 使用单例来保存数据 由于分类原则是没有变化的,我这里就使用单例来保存从API请求的分类数据,减少请求次数(API请求次数有限) class UserSinglen { List<WeType...Colors.white), )), ) ], ), body: new GridView.count

    1.3K20

    Flutter应用程序添加交互性 顶

    小部件的状态存储在状态对象中,从而将小部件的状态与外观分开。 当小部件的状态改变,状态对象调用setState(),告诉框架重绘小部件。 无状态小部件没有内部状态来管理。...当小部件的状态改变,状态对象调用setState(),告诉框架重绘小部件。 在本节中,您将创建个自定义有状态小部件。...定义_handleTap()函数,轻击框该函数更新_active,并调用setState()函数来更新UI。 实现小部件的所有交互式行为。...实现_handleTapboxChanged(),当方块被点击时调用该方法。 当状态改变调用setState()来更新UI。...实现_handleTapboxChanged(),当方块被点击时调用该方法。 调用setState()以在发生轻击和_active状态改变更新UI。

    4.2K20

    Widget的生命周期和渲染原理

    我们知道,在需要修改数据更新UI的时候,只要调用setState然后在其中更改数据,这样UI就可以随之改变了,这是因为setState函数可以触发widget的销毁重建,也就是触发state的build...接下来我们看setState的源码: 可以看到,除了断言,这里面实际调用行代码: _element!....好,现在我们知道了通过setState来根据数据自动调整UI的原理了,因此,原则我们是可以不调用setState而直接给element调用markNeedsBuild函数来实现UI的更新,即: 在StatefulWidget...8,dispose 当State对象被永久地从视图树中移除Flutter调用dispose函数。...当创建了个Widget之后,Flutter Framework必然会调用createElement创建Element对象并将其加入到Element树当中,之后Flutter Framework接着调用

    1.3K20

    Flutter | 基础Widget

    createElement():正如前文所述,个 Widget 可以对应多个 Element,Flutter Framework 在构建 UI 树调用此方法生成对应节点的 Element 对象...例如,当个 Stateful widget同时插入到 widget 树的多个未值日Flutter framework 就会调用该方法为每个位置生成个独立的 State 实例,其实,本质就是个...被改变,可以手动调用 setState() 方法通知 Flutter framework 状态发生改变,flutter framework 收到消息后,会调用其 build 方法重新构建 widget...但 State 实例只会在第次插入到树中被创建,当在重新构建,如果 widget 被修改了,flutter framework 会动态设置 state,widget 为最新的 widget 实例...典型的场景是当系统语言 Locale 或应用主题改变Flutter framework 调用 widget 进行回调 build() 主要是用来构建 Widget 子树的,会在如下场景被调用

    1.2K20

    原来Flutter代码是这样运行在原生系统的!快来了解Flutter标准模板,感受原生系统中Flutter的魅力!

    Dart只要理解基本编程概念(比如,类型、变量、函数和面向对象),并具备定前端基础(了解View是什么、页面基本布局等基础),就可以和我起完成计数器示例工程分析 Android Studio创建Flutter...而Flutter框架收到通知后,执行Widget#build,根据新状态重建界面。 状态的更改定要配合使用setState。...通过该方法调用Flutter会在底层标记Widget的状态,随后触发重建。示例即使修改_counter,若不调用setStateFlutter框架也不会感知到状态变化,因此界面也不会有任何改变。...在这个函数中,通过调用setState更新_counter属性同时,也通知Flutter框架其状态发生变化。...对StatefulWidget,当数据改变,需重建Widget去更新界面,即Widget创建销毁很频繁。

    39320

    带你轻松掌握Flutter 动画开发核心技能

    例如,当你掷球,它在何处落地,取决于抛球速度有多快、球有多重、距离地面有多远。 类似地,将连接在弹簧的球落下(并弹起)与连接到绳子的球放下的方式也是不同。...在为widget添加动画之前,先让我们认识下动画的几个朋友: Animation:是Flutter动画库中的个核心类,它生成指导动画的值; CurvedAnimation:Animation的个子类...,将过程抽象为个非线性曲线; AnimationController:Animation的个子类,用来管理Animation; Tween:在正在执行动画的对象所使用的数据范围之间生成值。...Flutter中的Animation对象个在段时间内依次生成个区间之间值的类。Animation对象的输出可以是线性的、曲线的、个步进函数或者任何其他可以设计的映射。...Tween.animate 要使用Tween对象,可调用它的animate()方法,传入个控制器对象。例如,以下代码在500毫秒内生成从0到255的整数值。

    67510

    Flutter 入门指北之滑动部件(超详细)

    前面的小节基本讲完了常用的部件和容器部件,也可以完成很多的界面,但是又个问题,假如我们要显示段文字,比如将 段又臭又长的文字 在界面上显示 1000 次,不难完成吧 // ..省略些无关代码...「诶诶诶,**,怎么只显示了部分,剩下的怎么画不下去」 日常开发中,遇到很多这种情况,许多界面不是页就能够显示完的。...以上代码查看 listview_main.dart 文件 总结下:如果 item 的高度能够准确获取,定要指定 itemExtent 的值,这样更加高效,至于要通过哪种方式来生成,完全看个人喜好吧。...为了方便写法呢,Flutter 对以上的两种方式进行了封装,省略了 delegate GridView.count/GridView.extent 直接看下如何修改 // 这种情况简化了 `GridView...因为 GridView 和 ListView 亮着都是可滑动的部件,直接拼接肯定会有「滑动冲突」,所以 Flutter 就提供了个粘合剂,CustomScrollView,那么 Flutter 如何实现呢

    2.4K30

    干货 | 携程火车票Flutter最佳实践

    跨平台方案能够节约定开发、测试、运维成本。Flutter是由谷歌开源的跨平台框架,可以快速在 iOS 和 Android 构建高质量的原生用户界面。...当在组件中改变了共享数据data,InheritedWidget组件自上而下通知所有使用过共享数据的组件并刷新组件,同时会回调didChangeDependencies() 方法。...同时最好复写dispose()和notifyListeners()方法,防止用户在调用数据销毁界面,而等到数据获取到以后通知界面刷新导致Crash。...当调用 setState() ,RenderObject 就会往上的父节点去查找,根据 isRepaintBoundary是否为 true,决定是否从这里开始往下去触发重绘,来确定要更新哪些区域。..._showCountDown = true; }); } } catch (e) {} } 3)处理办法 在调用setState()方法之前检查是否mounted

    2.2K30
    领券