首页
学习
活动
专区
圈层
工具
发布

Flutter ListView 列表控件

shrinkWrap 是否根据子组件的总高度来设置ListView的高度,默认为false 。当ListView在一个无边界(滚动方向上)的容器中时,shrinkWrap必须为true。...这种方式适合只有少量的子组件的情况,因为这种方式需要将所有children都提前创建好(这需要做大量工作),而不是等到子widget真正显示的时候再创建,也就是说通过默认构造函数构建的ListView没有应用基于...ListView.builder适合列表项比较多(或者无限)的情况,因为只有当子组件真正显示的时候才会被创建,也就说通过该构造函数创建的ListView是支持基于Sliver的懒加载模型的。...当列表滚动到具体的index位置时,会调用该构建器构建列表项。 itemCount 列表项的数量,如果为null,则为无限列表。...可滚动组件的构造函数如果需要一个列表项Builder,那么通过该构造函数构建的可滚动组件通常就是支持基于Sliver的懒加载模型的,反之则不支持,其他可滚动组件亦是如此。

3.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    UITableView在Flutter中是什么?

    所以,考虑到创建子Widget产生的性能问题,更好的方法是抽象出创建子Widget的方法,交由ListView统一管理,在真正需要展示该子Widget时再去创建。...当列表滚动到相应位置时,ListView会调用该方法创建对应的子Widget。 itemCount,表示列表项的数量,如果为空,则表示ListView为无限列表。...我定义了一个拥有100个列表元素的ListView,在列表项的创建方法中,分别将index的值设置为ListTile的标题与子标题。...具体的实现思路是: 在创建SliverAppBar时,把 flexibleSpace 参数设置为悬浮头图背景。...ListView组件,同时支持垂直方向和水平方向滚动,不仅提供了少量一次性创建子视图的默认构造方法,也提供了大量按需创建子视图的ListView.builder机制,并且支持自定义分割线。

    7.4K10

    Flutter可滑动组件

    Flutter官方文档中提到,ListView的默认构造器建议在需要展示的元素个数较少时使用,在展示的元素数量较多时,建议使用ListView.builder() 方法构造视图。...深入查看ListView的源码后可以发现,在默认构造器中使用了SliverChildListDelegate类创建了一个成员变量,而在构造方法中传入的children即作为创建该对象的入参。...4.滚动事件监听 4.1 滚动事件监听介绍 对于滚动的视图,我们经常需要监听它的一些滚动事件,在监听到滚动事件时执行对应的操作。...比如视图滚动到底部时,我们可能希望做上拉加载更多;比如滚动到一定位置时显示一个回到顶部的按钮,点击回到顶部的按钮,回到顶部;比如监听滚动什么时候开始,什么时候结束; 在Flutter中监听滚动相关的内容由两部分组成...ScrollController可以通过initialScrollOffset设置初始位置,也可以监听到滚动的位置,但无法监听到开始滚动与结束滚动的事件。

    8.1K30

    Flutter 构建完整应用手册-列表 顶

    创建一个水平列表 有时,您可能想要创建一个水平滚动而不是垂直滚动的列表。 ListView部件支持开箱即用的水平列表。...虽然默认的ListView构造函数要求我们一次创建所有条目,但ListView.builder构造函数将在滚动到屏幕上时创建条目。 1.创建一个数据源 首先,我们需要一个数据源来处理。...这是ListView.builder将发挥作用的地方。 在我们的例子中,我们将在它自己的行上显示每个字符串。...路线 使用不同类型的条目创建数据源 将数据源转换为部件列表 1.使用不同类型的条目创建数据源 项目类型 为了在列表中表示不同类型的项目,我们需要为每种类型的项目定义一个类别。...创建一个网格列表 在某些情况下,您可能希望将项目显示为网格,而不是显示下一个项目的普通列表。 对于这个任务,我们将使用GridView部件。

    3.1K20

    《Flutter》-- 6.高级组件

    ,//滚动的方向,默认在垂直方向滚动 this.reverse = false,//控制从头还是从尾开始滚动,默认false,即从头开始滚动 this.padding,//插入子组件时的内边距...bool primary,//是否是与父级关联的主滚动视图 this.physics,//设置滚动效果 this.controller,//控制滚动位置,当primary为true时,controller...= true,//是否保持滚动位置 this.debugLabel, }) 当keepScrollOffset的属性值为true时,可滚动组件的滚动位置会被存储到PageStorage中,当可滚动组件重新创建时可以使用...6.2.2 ListView.builder 使用ListView.builder创建的列表是基于Sliver的延迟加载创建的,渲染性能比较高,适合用于列表元素比较多的情况。...,//处理拖拽开始行为的方式,默认为检测到拖拽手势时开始执行滚动拖拽行为 }) 2)PageView.builder():创建一个滚动列表,适合子组件比较多的场景,需要指定子组件的数量; 3)PageView.custom

    12.2K20

    Flutter开发-可滚动组件

    在ListView中,指定itemExtent比让子组件自己决定自身长度会更高效,这是因为指定itemExtent后,滚动系统可以提前知道列表的长度,而无需每次构建子组件时都去再计算一下,尤其是在滚动位置频繁变化时...shrinkWrap:该属性表示是否根据子组件的总长度来设置ListView的长度,默认值为false 。默认情况下,ListView的会在滚动方向尽可能多的占用空间。...当ListView在一个无边界(滚动方向上)的容器中时,shrinkWrap必须为true。...ListView.builder ListView.builder适合列表项比较多(或者无限)的情况,因为只有当子组件真正显示的时候才会被创建,也就说通过该构造函数创建的ListView是支持基于Sliver...我们在后面在介绍可滚动组件的构造函数时将不再专门说明其是否支持基于Sliver的懒加载模型了。

    5.6K20

    Flutter 首页必用组件NestedScrollView

    如果你想升级到最新版本,建议慎重,有些人升级后项目无法运行。...在普通的ScrollView中, 如果有一个Sliver组件容纳了一个TabBarView,它沿相反的方向滚动(例如,允许用户在标签所代表的页面之间水平滑动,而列表则垂直滚动),则该TabBarView...滚动隐藏AppBar 比如实现如下场景,当列表滚动时,隐藏AppBar,用法如下: NestedScrollView( headerSliverBuilder: (BuildContext context...reverse参数表示反转滚动方向,并不是由垂直转为水平,而是垂直方向滚动时,默认向下滚动,reverse设置false,滚动方向改为向上,同理水平滚动改为水平向左。...controller为滚动控制器,可以监听滚到的位置,设置滚动的位置等,用法如下: _scrollController = ScrollController(); //监听滚动位置 _scrollController.addListener

    4.8K10

    Flutter跨平台移动端开发丨SingleChildScrollView、ListView......

    默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,如当滑动到边界时,继续拖动的话,在iOS上会出现弹性效果,而在Android上会出现微光效果。...指定 itemExtent 的值比让子元素决定自身长度在绘制时更高效,特别是在滚动位置频繁变化的状态下,因为设置 itemExtent 可以让滚动系统提前知道列表的长度。...(在懒加载时,如果设置了包裹那么在此列表项滑出屏幕外时不会被GC。...ListView.builder 当 listview 的列表项较多或数量未知时,就需要使用 ListView.builder 来构建列表了 import 'package:flutter/material.dart...(在懒加载时,如果设置了包裹那么在此列表项滑出屏幕外时不会被GC。

    9.9K51

    Flutter 刷新页面:通过下拉刷新提升用户体验

    RefreshIndicator 挂件 设置 RefreshIndicator 挂件需要使用 RefreshIndicator 包裹你的可滚动的挂件,并且提供一个 Future 函数给 onRefresh...无论选择哪种方法,目标都是确保在触发刷新操作时,应用程序的状态能够反映新数据,而不会导致用户界面的中断或者不一致。...RefreshIndicator 挂件应该覆盖在需要刷新的可滚动的内容上。还有很重要的一点需要注意,RefreshIndicator 只在垂直可滚动的 child 上才可工作,。...优化刷新体验 优化刷新体验而不仅仅是更新数据;这是为了创建一种让用户感觉自然的无缝且直观的交互。在 Flutter 应用中,平滑的刷新动作和正确的错误处理是提升用户满意度和信任度的关键。...先进技术和最佳实践 当我们完善 Flutter 应用程序时,采用先进的技术并遵循最佳实践可以显著提高代码的质量和可维护性,特别是在实现拉动刷新等功能时。

    1.4K10

    flutter中对列表的性能优化

    嵌套列表 - ShrinkWrap 与 Slivers 使用 ShrinkWrap 的列表列表 下面是一些使用ListView对象呈现列表列表的代码,内部列表的shrinkWrap值设置为 true。...” “另请注意:虽然ListView.builder(默认情况下)有效地构建其子项,为您节省构建屏幕外小部件的不必要成本,但设置 shrinkWrap为true覆盖此默认行为!...当您滚动浏览此 UI 并注意该ColorBarState.build方法的调用方式时,会出现可怕的部分 。...每个内部列表包含 100 个元素,因此当 UI 加载时,您会立即看到 100 个“Building ColorBarState”的实例打印到控制台, 更糟糕的是,一旦向下滚动大约一百行,就会再生成一百行...当您滚动时,会动态构建更多小部件,正如您所期望的那样。更好的是,一直滚动到下一个列表也不会产生任何特殊费用。 Flutter 会根据需要重新构建小部件,而且很快。

    4.5K00

    Flutter | 滚动组件,ListView,GridVIew等

    其实此属性的本质上是决定可滚动组件的初始滚动位置是在 头 还是在 尾 ,如 false 时,初始位置在头,反之则在 尾 primary:指是否使用 widget 树中默认的 PrimaryScrollController...) shrinkWrap:是否根据子组件的总长度来设置 ListView 的长度,默认值为 false,默认情况下, ListView 会在滚动的方向尽可能的占用更多的空间。...这种方式只适合有少量的子组件的情况,因为这种需要将所有 children 都提前创建好(这需要大量的工作),而不是等子 widget 真正显示的时候在创建,也就是说默认构造函数构建的 ListView...(或者无限) 的情况,因为只有当子组件真正显示的时候才会被创建,也就是说改构造函数是支持基于 Sliver 的懒加载模型的;下面看一下核心参数: ListView.builder({ // ListView...:在最开始的时候说过 sliver 是一种延时初始化的模型,只有当 Sliver 出现在视口时才会去构建他,但是 Sliver 版的 SliverList,SliverGrid 自身是不能滚动的,所以他们的子项就会失去延时初始化的作用

    9.8K20

    Flutter组件基础——ListView

    --more--> ListView的使用 ListView的使用很简单,但是需要多多练习; ListView的使用,通过设置children来实现,children中的Item为Widget对象。...,在这里自定义了一个MyList的Widget,然后在MyApp中使用MyList,就避免了在父视图嵌套太多的问题。...动态列表 ListView.builder() 使用动态列表需要先来看一下List类型, List类型 List是集合类型,声明有几种方式,使用方式可以参考Swift中的Array var myList...= List(): 非固定长度的数组 var myList = List(2): 长度为2的数组 var myList = List(): 创建一个String类型的数组 var myList...= [1, 2, 3]: 创建一个1、2、3的数组 也可以使用generate方法来生成List元素,比如 new List.generate(1000,, (i) => "Item

    76130

    《深入浅出Dart》Widget和布局

    Flutter中的Widget分为两类: StatelessWidget StatelessWidget是不可变的,一旦创建就不能更改。它们通常用于表示那些没有状态改变的静态UI元素。...布局组件:构建灵活的用户界面 在Flutter中,有多种布局组件可供选择,用于在屏幕上排列和定位Widget。...以下是几个常用的布局组件: Container Container是一个多功能的容器,可以用于装饰、定位和约束其子Widget。你可以设置它的大小、颜色、边距等。...,可用于显示可滚动的列表。...Widget作为Flutter用户界面的构建块,帮助我们构建出灵活、交互丰富的应用程序。布局组件则允许我们在屏幕上排列和定位Widget,创建出美观、一致的用户界面。

    60520

    【Flutter 专题】131 图解 AnimatedList 动画列表

    和尚在使用列表加载数据项时,为了提高用户浏览体验,在增加删除 Item 项时适当增加一点小动画,于是和尚通过 AnimatedList 简单尝试一下; AnimatedList 源码分析 const...List;通过 AnimatedListState 用于动态的增加或删除 Item;提供了 itemBuilder & initialItemCount 与 ListView.builder 方式类似...& removeItem 为数据增删时调整过渡动画; 案例尝试 1. itemBuilder & initialItemCount AnimatedList 通过 Builder 方式构建的一个优势就是列表项仅在滚动到视图内时才会构建...Item 时通过 AnimatedListState 提供的方法进行操作,并非直接对 AnimatedList 数据进行的更新,需要手动更新; // of 方式 AnimatedList.of(context...默认都是会填充整个布局,在设置 reverse 时会发现是从屏幕最底部作为起始位的; reverse: true, ?

    1.2K50

    Flutter 库:强大的下拉刷新上拉加载框架——EasyRefresh

    它支持几乎所有的 Flutter 可滚动小部件。它的功能与Android 的 SmartRefreshLayout 非常相似,并吸收了许多第三方库的优点。...EasyRefresh的目标是为Flutter创建一个功能强大、稳定和成熟的下拉刷新框架。...) 支持指示器位置设置,结合监听器可以放置在任意位置 支持页面启动时刷新,并可自定义视图 支持安全区域,不会遮挡内容 可自定义滚动参数,允许列表具有不同的滚动反馈和惯性 3、在线演示 https://xuelongqy.github.io...SimpleEasyRefresher> { @override Widget build(BuildContext context) { return EasyRefresh.builder( // 在开始刷新时立即触发刷新...call(); setState(() {}); }, // 指定刷新时的头部组件 header: ClassicHeader( hitOver

    1.7K00

    Flutter 视图布局(二)

    在 Flutter 视图布局(一)中文章结束时留下了一个问题,大家有尝试去实现吗? 如果大家认真看文章的话,我觉得这并不是很难的东西。...在 MyApp 项目目录下有个 pubspec.yaml 文件,这个文件主要是 Flutter 用于管理外部依赖项。...简单来说(翻译一下),通常在可滚动列表的容器中子项都会被装在重绘边界之内,以便列表在滚动时不需要将它们进行重绘。...源码中说到 ListView 有4中设置子元素的方式: List ListView.builder ListView.separated ListView.custom 第一种 List...Ok,那我们就来看看代码是如何实现的。 当 itemCount 设置为 null 时就可以实现无限下拉列表。少侠小伙伴们可以在代码中尝试修改一下看看效果。

    3.6K10
    领券