网站建设资讯

NEWS

网站建设资讯

flutter优秀组件,flutter ui组件库

Flutter组件TextFormField详解

TextFormField继承自FormField,是flutter表单提交相关组件,类似于html中的 input type="text" / ,是个文本输入框。需要在 Form 组件内部使用,否则无法正确提交数据。

创新互联公司专注于企业成都全网营销推广、网站重做改版、龙马潭网站定制设计、自适应品牌网站建设、成都h5网站建设商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为龙马潭等各大城市提供网站开发制作服务。

未完待续

Flutter 可滚动组件 之 SingleChildScrollView (十五)

SingleChildScrollView 源码定义如下:

需要注意的是, 通常 SingleChildScrollView 只应在期望的内容不会超过屏幕太多时使用 ,这是因为 SingleChildScrollView 不支持基于 Sliver 的延迟加载模型,所以如果预计视口可能包含超出屏幕尺寸太多的内容时,那么使用 SingleChildScrollView 将会非常昂贵(性能差),此时应该使用一些支持Sliver延迟加载的可滚动组件,如 ListView 。

示例1

下面是一个将大写字母 A-Z 沿垂直方向显示的例子,由于垂直方向空间会超过屏幕视口高度,所以我们使用SingleChildScrollView:

示例2

示例3 - 横向滚动

flutter常用组件

主要是关注decoration (装饰) 可以设置container的属性,这里color指的是背景色

alertdialog会返回一个结果,这样可以通过switch或其他方法做多次弹框等其他操作

Flutter 可滚动组件 之 GridView (十七)

GridView可以构建一个二维网格列表

默认构造函数如下:

我们可以看到,GridView和ListView的大多数参数都是相同的,它们的含义也都相同的。我们唯一需要关注的是gridDelegate参数,类型是SliverGridDelegate,它的作用是控制GridView子组件如何排列(layout)。

SliverGridDelegate 是一个抽象类,定义了GridView Layout相关接口,子类需要通过实现它们来实现具体的布局算法。Flutter中提供了两个 SliverGridDelegate 的子类 SliverGridDelegateWithFixedCrossAxisCount 和 SliverGridDelegateWithMaxCrossAxisExtent

SliverGridDelegateWithFixedCrossAxisCount

该子类实现了一个横轴为固定数量子元素的layout算法,其构造函数为:

可以发现,子元素的大小是通过crossAxisCount和childAspectRatio两个参数共同决定的。注意,这里的子元素指的是子组件的最大显示空间,注意确保子组件的实际大小不要超出子元素的空间。

示例

SliverGridDelegateWithMaxCrossAxisExtent

该子类实现了一个横轴子元素为固定最大长度的layout算法,其构造函数为

maxCrossAxisExtent为子元素在横轴上的最大长度,之所以是“最大”长度,是因为横轴方向每个子元素的长度仍然是等分的,举个例子,如果ViewPort的横轴长度是450,那么当maxCrossAxisExtent的值在区间[450/4,450/3)内的话,子元素最终实际长度都为112.5,而childAspectRatio所指的子元素横轴和主轴的长度比为最终的长度比。其它参数和SliverGridDelegateWithFixedCrossAxisCount相同。

示例

GridView.count构造函数内部使用了SliverGridDelegateWithFixedCrossAxisCount,我们通过它可以快速的创建横轴固定数量子元素的GridView

示例

GridView.extent构造函数内部使用了SliverGridDelegateWithMaxCrossAxisExtent,我们通过它可以快速的创建横轴子元素为固定最大长度的的GridView

示例

上面我们介绍的GridView都需要一个widget数组作为其子元素,这些方式都会提前将所有子widget都构建好,所以只适用于子widget数量比较少时,当子widget比较多时,我们可以通过GridView.builder来动态创建子widget。GridView.builder 必须指定的参数有两个:

示例

假设我们需要从一个异步数据源(如网络)分批获取一些Icon,然后用GridView来展示:

_retrieveIcons():在此方法中我们通过Future.delayed来模拟从异步数据源获取数据,每次获取数据需要200毫秒,获取成功后将新数据添加到_icons,然后调用setState重新构建。

在 itemBuilder 中,如果显示到最后一个时,判断是否需要继续获取数据,然后返回一个Icon。

GridView.builder 源码定义如下:

它主要要传两个参数 gridDelegate 和 childrenDelegate ,gridDelegate是SliverGridDelegate类型,SliverGridDelegate它有两个子类,就是我们上文中说的 SliverGridDelegateWithFixedCrossAxisCount 和 SliverGridDelegateWithMaxCrossAxisExtent ,childrenDelegate 是SliverChildDelegate类型,SliverChildDelegate也有两个子类 SliverChildBuilderDelegate 和 SliverChildListDelegate ,一个是通过Builder创建Item,一个是指定所有item。和ListView 很类似

示例

补充知识点:

GridView中的Sliver是SliverGrid

ListView 和 GridView 都是继承于BoxScrollView,BoxScrollView中存在一个抽象方法buildChildLayout,这个buildChildLayout方法是在提供Sliver,GridView中关于buildChildLayout实现如下:

Flutter组件Container详解

Container是Flutter里很常用的一个组件,类似于html中的div。

如图所示,和div一样,container也可以设置宽度(width)、高度(heigth)、内边距(padding)、外边距(margin)、边框(border)。

常用属性讲解

width:容器的宽度

heigth:容器的高度

color:容器的背景色

效果如图

padding:内边距

margin:外边距


当前文章:flutter优秀组件,flutter ui组件库
转载来于:http://njwzjz.com/article/dsdeiss.html