Axis scrollDirection 滚动的方向,即轴方向,Axis.vertical 垂直方向 和 Axis.horizontal 水平方向,默认为垂直方向 bool reverse 是否反向/颠倒顺序的...,默认为 false,如为 true 则 垂直方向从底部开始,水平方向从右边开始 bool primary 是否是主主要的滚动 Widget,默认为 false, 如果为 true 则 controller...,垂直方向从底部开始,水平方向从右边开始 controller 关于滚动事件,如果真要说的话,那么篇幅就太长了,所以这里暂时不讲,后续会将一些 Widget 的事件 整理出来。...简单来说(翻译一下),通常在可滚动列表的容器中子项都会被装在重绘边界之内,以便列表在滚动时不需要将它们进行重绘。...Ok,那我们就来看看代码是如何实现的。 当 itemCount 设置为 null 时就可以实现无限下拉列表。少侠小伙伴们可以在代码中尝试修改一下看看效果。
设置为垂直的布局的方向!...* 设置右对齐 android:layout_gravity="right" **注意点: 如何进行控制水平方向的多个组件的等宽的设置。...通过 android:maxLines指定 EditText的最大行数为两行,这样当输入的内容超过两行时,文本就会向上滚动,而 EditText则不会再继续拉伸 如何才能让进度条在数据加载完成时消失呢?...一个是从里往外撑,一个是从外往里撑 ScrollView ScrollView滚动视图是指当拥有很多内容,屏幕显示不完时,需要通过滚动跳来显示的视图。ScrollView只支持垂直滚动。...,HorizontalScrollView用于设置水平滚动条:需要注意的是,有一个属性是 scrollbars 可以设置滚动条的方向:但是ScrollView设置成horizontal是和设置成none
通常用的子元素是垂直方向的LinearLayout,显示在最上层的垂直方向可以让用户滚动的箭头。...public boolean isSmoothScrollingEnabled () 返回值 按箭头方向滚动时,是否显示滚动的平滑效果。...* 为使矩形区域全部可见,视图将可以被滚动显示 参数 child 发出请求的子视图 rectangle 子项目坐标系内的矩形,即此子项目希望在屏幕上的定位 immediate 设为true...能见度的值的范围是0.0(没有消失)到1.0(完全消失)之间。缺省的执行返回值为0.0或者1.0,而不是他们中间的某个值。滚动时子类需要重载这个方法来提供一个平缓的渐隐的实现。...能见度的值的范围是0.0(没有消失)到1.0(完全消失)之间。缺省的执行返回值为0.0或者1.0,而不是他们中间的某个值。滚动时子类需要重载这个方法来提供一个平缓的渐隐的实现。
LimitedBox 只有当它不受约束时才会限制它的大小。...CustomSingleChildLayout 将其单个孩子的布局延迟到代理的部件。 多子部件布局部件 Row 在水平方向上布局子部件的列表。 Column 在垂直方向上布局子部件的列表。...GridView 可滚动的2D小部件阵列。 Flow 实现流布局算法的小部件。 Table 为其子项使用表格布局算法的小部件 Wrap 一个小部件,它以多个水平或垂直运行显示其子项。...ListBody 一个小部件,它沿着一个给定的轴顺序排列它的子元素,强制它们到另一个轴的父元素的维度。 ListView 可滚动的线性小部件列表。 ListView是最常用的滚动小部件。...它在滚动方向上一个接一个地显示其子项。 在交叉轴上,子部件们需要填充ListView。 CustomMultiChildLayout 一个使用代理来调整尺寸和定位多个子项的小部件。
可滚动组件 当组件内容超过当前显示视口(ViewPort)时,如果没有特殊处理,Flutter 就会提示 Overflow 错误,为此,Flutter 提供了多种可滚动组件,用于显示列表和长布局; 可滚动组件都直接或间接的包含一个..., 当滑动方向为垂直方向 (ScrollDirection 值为 Axis.vertical ) 并且没有指定 controller 时,primary 默认为 true。...的 长度为 itemExtent 的值;这里的长度指的是方向上子组件的长度,也就是说滚动的是垂直方向,则 itemnExtent 代表子组件的高度;如果是水平方向,则是子组件的宽度。...) shrinkWrap:是否根据子组件的总长度来设置 ListView 的长度,默认值为 false,默认情况下, ListView 会在滚动的方向尽可能的占用更多的空间。...当 ListView 在一个无边界(滚动方向上)的容器中时, shrinkWrap 必须为 true addAutomaticKeepAlives:该属性表示是否将列表项(子组件) 包裹在 AutomaticKeepAlive
,//滚动的方向,默认在垂直方向滚动 this.reverse = false,//控制从头还是从尾开始滚动,默认false,即从头开始滚动 this.padding,//插入子组件时的内边距...bool primary,//是否是与父级关联的主滚动视图 this.physics,//设置滚动效果 this.controller,//控制滚动位置,当primary为true时,controller...,默认false,即从头开始滚动 ScrollController controller,//控制滚动位置,当primary为true时,controller必须为null bool primary...= true,//是否保持滚动位置 this.debugLabel, }) 当keepScrollOffset的属性值为true时,可滚动组件的滚动位置会被存储到PageStorage中,当可滚动组件重新创建时可以使用...如果滚动方向是垂直方向,则表示子组件的高度;如果滚动方向为水平方向,则表示子组件的长度。
inherited Row 在水平方向上布局子部件的列表。 一个以水平数组显示其子项的部件。 要让孩子展开以填充可用的水平空间,请将该孩子包裹在Expanded部件中。...如果该行的非弹性内容比该行(那些不包含在Expanded或Flexible部件中的)本身多,则该行被认为已经溢出。当一行溢出时,该行没有任何剩余空间Expanded和Flexible的子项。...Column部件不滚动(并且通常认为宁愿在列中有更多子项也不使用适合可用空间是错误的)。 如果您有一行小部件,并希望它们在空间不足的情况下能够滚动,请考虑使用ListView。...当一个列有一个或多个Expanded或Flexible的子元素,并且被放置在另一列,或者在一个ListView中,或者在其它没有为该列提供最大高度限制的上下文中时,你会在运行时说这个异常存在弹性子部件,...黄色和黑色的条纹横幅 当列的内容超过可用空间量时,列溢出,内容被剪辑。 在调试模式下,在溢出边缘处呈现黄色和黑色条纹条以指示问题,并在列下方显示一条消息,指出检测到多少溢出。
多子类元素布局 多子类元素布局的 Widget 有10种: Row 在水平方向上排列子元素的列表。 Column 在垂直方向上排列子元素的列表。...ListBody 一个 Widget,它沿着一个给定的轴,顺序排列它的子元素。 ListView 可滚动的列表控件。...ListView 是最常用的滚动 Widget,它在滚动方向上一个接一个地显示它的子元素。在纵轴上,子元素们被要求填充ListView。 Table 为其子元素使用表格布局算法的 Widget。...Wrap 可以在水平或垂直方向多行显示其子元素。 Flow 一个可以实现流式布局算法的 Widget。 Stack 可以允许其子元素简单的堆叠在一起。...ConstrainedBox 对其子项施加附加约束的 Widget。 FittedBox 按自己的大小调整其子元素的大小和位置。 LimitedBox 一个当其自身不受约束时才限制其大小的盒子。
3.6.2 实现横向滚动和瀑布流布局 Listview 的可扩展性不好,只能实现纵向滚动,如果想要横向滚动的话 ListView 就做不到了。下面用 RecyclerView 来实现横向滚动。...首先对子项布局进行修改一下,目前的布局是水平排列的,不适合水平滚动。 设置布局的排列方向,默认是纵向排列的。...,里面穿的参数分别是 3 代表会把不会分成 3 列,第二个参数传入的是布局的排列方向,对于瀑布流来说一般就是传入 VERTICAL,水平方向没有什么意义。...一般做法就是将子View 的宽度设置为 match_parent 然后设置 margin 来让子项之间互留一点间距。
那么,当这些基本元素的排列布局超过屏幕显示尺寸(即超过一屏)时,我们就需要引入列表控件来展示视图的完整内容,并根据元素的多少进行自适应滚动展示。...除了默认的垂直方向布局之外,ListView还可以通过设置 scrollDirection 参数支持水平方向布局。...如下所示,我定义了一组不同颜色背景的组件,将他们的宽度设置为140,并包在了水平布局的ListView中,让它们可以横向滚动: ListView( itemExtent: 140,//item...当列表滚动到相应位置时,ListView会调用该方法创建对应的子Widget。 itemCount,表示列表项的数量,如果为空,则表示ListView为无限列表。...ListView组件,同时支持垂直方向和水平方向滚动,不仅提供了少量一次性创建子视图的默认构造方法,也提供了大量按需创建子视图的ListView.builder机制,并且支持自定义分割线。
列中的第二个子项(也是文本)显示为灰色。 标题行中的最后两项是一个红色的星形图标和文字“41”。 将整行放在容器中,并沿着每个边缘填充32像素。 这是实现标题行的代码。...您可以指定行或列如何在垂直和水平方向上对齐其子项。 您可以拉伸或限制特定的子部件。 您可以指定子窗口小部件如何使用行或列的可用空间。...例如,要创建一个由三个小部件组成的行,其中中间小部件的宽度是其他两个小部件的两倍,请将中间小部件的弹性系数设置为2: appBar: new AppBar( title: new Text(widget.title...GridView提供了两个预制列表,或者您可以构建自己的自定义网格。 当GridView检测到其内容太长而不适合渲染框时,它会自动滚动。...ListView摘要: 专门用于组织框列表的列 可以水平或垂直放置 检测它的内容何时不适合并提供滚动 比Column更少配置,但更易于使用并支持滚动 ListView示例: ?
控件)来说,比如说ListView只能竖向滚动显示数据,不能横向滚动显示数据,在一些特殊的需求中,ListView就无能为力了。...需要显示的数据信息,之后将数据信息加入ColorAdapter对象中并且设置ListView控件的适配器为ColorAdapter对象。...那么接下来如何显示横向的滚动View呢,其实很简单:只需要在RecyclerViewActivity中加一句代码: linearLayoutManager.setOrientation(...LinearLayoutManager.HORIZONTAL); // 设置控件内排布方式为水平 如图: ?...其实也很简单,我们只需要改RecyclerView的布局管理类型为网状布局就行了: /* * 设置网状布局管理器,每一行3个子项,排布方式为竖直方向排布 */ StaggeredGridLayoutManager
Row 组件 这两个组件可以用来进行做flex布局,row可以用来做水平方向的布局,column可以用来进行垂直方向上的布局,这两个类都是基于web的flex布局模式实现的。...如果我们有几个组件,并且希望在空间不足的时候有个滚动效果,那么我们就可以考虑使用ListView组件。 Row组件类有这么几个属性: children:要进行布局的子组件。...同样,Cloumn组件默认也不支持滚动,如果我们想要滚动的功能,那么我们还得考虑使用ListView组件。 Cloumn组件上的属性和Row 组件上的属性基本一致,这里就不再多说了。...当传入的组件没有具体的垂直约束边界(高度)时,我们可能会遇到各种问题,比如: 我们不用Expanded组件对Cloumn组件进行包裹,而Cloumn组件中的内容超出了容器本身的限制。...子元素中带有Flexible.fit属性值为tight则强制填充分配的空间),Flexible.fit属性值为loose的,则不再强制填充分配的空间。 设置Cloumn的宽度为子项的最大宽度。
而LazyRow则是用于在水平方向上滚动的可复用列表。...这也难怪,毕竟左侧的边距我们设置的是10dp,而右侧的边距虽然也是10dp,但是它会再叠加第二个子项左侧的边距,于是就变成了20dp。 最后一个子项也会面临同样的问题。 那么如何解决这个问题呢?...然而这个解决方案并不完美,因为如果你尝试滚动一下列表的话,你会发现由于给Lazy Layout设置了边距,左右两侧内容会出现切割现象: 为了解决这个问题,我们可以使用专门为Lazy Layout打造的边距设置属性...因此最好的设计方案就是,当用户向下滚动列表时,我们就认为用户不再需要和Fab按钮交互,此时将按钮进行隐藏。 下面具体看一下如何在Compose中实现这种效果。...最后在MainLayout()函数中将以上两个函数都包含进去,并加了一个布尔变量,只有firstVisibleItemIndex为0,也就是列表中第一个子项元素可见的时候,Fab按钮才显示。
前言 当组件内容超过当前显示视口(ViewPort)时,如果没有特殊处理,Flutter则会提示Overflow错误。...的“长度”为itemExtent的值;这里的“长度”是指滚动方向上子组件的长度,也就是说如果滚动方向是垂直方向,则itemExtent代表子组件的高度;如果滚动方向为水平方向,则itemExtent就代表子组件的宽度...shrinkWrap:该属性表示是否根据子组件的总长度来设置ListView的长度,默认值为false 。默认情况下,ListView的会在滚动方向尽可能多的占用空间。...当ListView在一个无边界(滚动方向上)的容器中时,shrinkWrap必须为true。...当列表滚动到具体的index位置时,会调用该构建器构建列表项。 itemCount:列表项的数量,如果为null,则为无限列表。
对象,它决定可滚动Widget如何响应用户操作,比如用户滑动完抬起手指后,继续执行动画;或者滑动到边界时,如何显示。...默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,如当滑动到边界时,继续拖动的话,在iOS上会出现弹性效果,而在Android上会出现微光效果。...对象,它决定可滚动Widget如何响应用户操作,比如用户滑动完抬起手指后,继续执行动画;或者滑动到边界时,如何显示。...指定 itemExtent 的值比让子元素决定自身长度在绘制时更高效,特别是在滚动位置频繁变化的状态下,因为设置 itemExtent 可以让滚动系统提前知道列表的长度。...对象,它决定可滚动Widget如何响应用户操作,比如用户滑动完抬起手指后,继续执行动画;或者滑动到边界时,如何显示。
先来看下如何简单的使用RecyclerView RecyclerView listView = (RecyclerView)findViewById(R.id.lsit); listView.setLayoutManager...布局参数,设置为Wrap_Content,由Item自己决定。...当dx>0时,控件向右滚动,即当dx时,控件向左滚动,即--> 接着,调用先前已经写好的布局方法layoutItems(),对Item进行重新布局。 最后,返回实际滑动的距离。...第四,处理重新设置Adapter 当重新调用RecyclerView的setAdapter时,需要对LayoutManager的所有状态进行重置 @Override public void onAdapterChanged...接着,在getChildDrawingOrder()中,childCount为当前已经显示的Item数量,i为item的位置。 旋转画廊中,中间位置的优先级是最高的,两边item随着递减。
Row 用于水平显示子项 A widget that displays its children in a horizontal array....注:这个控件本身不可以滚动,并且如果里面包含了太多的子项或者子项长度超过可用空间的话会被视为错误。...如果想要滚动的话可以考虑用ListView 对应的,垂直显示子项用Column 如果只有一个子项,建议用Align或Center布局 示例eg: new Row( children: 的 可选属性 含义 alphabetic 默认的字母基线 ideographic 对齐表意字符 textDirection 子项的排列方向 可选属性 含义...)进行分布,例如:在Row中,flex系数为2.0的子项宽度将会是flex系数为1.0的宽度的二倍。
树中默认的`PrimaryScrollController` this.physics, //决定可滚动组件如何响应用户操作,滑动到边界时,出现弹性(ios)还是微光(android) this.controller...,并且没有指定controller时,primary默认为true. physics 决定可滚动组件如何响应用户操作,滑动到边界时,出现弹性(ios)还是微光(android),ClampingScrollPhysics...为此,Flutter中提出一个Sliver(中文为”薄片“的意思)概念,如果一个可滚动组件支持Sliver模型,那么该滚动可以将子组件分成好多个”薄片“(Sliver),只有当Sliver出现在视口中时才会去构建它...3、示例 垂直滚动 下面是一个将大写字母A-Z沿垂直方向显示的例子。...水平滚动 下面是一个将大写字母A-Z沿水平方向显示的例子。
icon: Icon(Icons.home), label: Text('Home') ), Wrap 它根据提供的方向值水平或垂直显示其子项...SafeArea 此小部件为您的小部件添加填充,确保您的应用不会与操作系统和设备显示功能(如状态栏)发生冲突。...当孩子被过度滚动时,动画圆形进度指示器会淡入视图并调用未来来更新可滚动的内容。...RefreshIndicator( child: ListView(), onRefresh: () async {}), RichText 这允许我们在同一个句子或段落上显示具有不同样式的文本。...,让我们为更好的使用Flutter加油吧。
领取专属 10元无门槛券
手把手带您无忧上云