Flutter笔记(2)flutter的widget一切皆为组件

一切皆为组件

Flutter的核心理念:一切皆为Widget(同Java万物皆对象,我们从来都不缺对象,只是缺一个new)。手机应用里的所有东西(按钮、输入框、卡片、列表、布局方式、动画处理等)都可以作为组件Widget,开发者通过可组合的空间集合、丰富的动画库实现了富有感染力应用界面设计。
所以:Flutter具有一只的统一对象模型:Widget

1.Widget下面有两大类组件:(如图例所示)
图参考与网络,如有雷同,敬请谅解

2.怎么更形象的理解Widget呢?

  • 一个界面组件(输入框、按钮)
  • 一种布局(填充、滚动)
  • 一种手势处理(GestureDetector)

Widget和Android的布局控件一样,每个Widget都有丰富的属性和方法(颜色、大小、背景、边距等)。
每个Widget跟Android布局控件相似的都有回调方法处理(单击事件回调、手势事件回调等)
例如:

  • bottom:底部间距属性
  • left:左侧间距属性
  • right:右侧间距属性
  • toString:转换成字符串方法

等,以上还有很多方法和属性,自我们实际的应用中供我们来使用。如果Widget自带的属性不能满足我们项目设计的需求时,当然同我们Android和IOS一样,可以自定义Widget属性和方法。

3.必要时Widget需要自定义

如果你不是没有任何开发经验,那么你一定知道任何app里都有可能有重用性比较高的控件。所以对于那么重用性比较高的,或者需要你自定义的控件的,我们需要将它们给封装起来,以便下次或者其他app中继续使用。这个时候就可以自定义Widget封装起来,以供我们在其他的地方使用。

4.Widget的交互状态
如果Widget需要根据用户交互或其他原因进行更改,则此Widget是有状态的,情况如下:

  • Stateless widgets 无状态控件是不可变的, 这意味着它们的属性不能改变 - 所有的值都是最终的,使用的时候要继承StatelessWidget
  • statefullWidget有状态控件。持有的状态可在widget生命周期中发生变化实现一个 stateful widget 至少需要两个类:
    (1)一个 StatefulWidget
    (2)一个 State类。 StatefulWidget类本身是不变的,但是 State类在widget生命周期中始终存在,且可改变:
    实现方式:
1.自定义一个类继承自statefulWidget
2.重写createState()方法,为该statefulWidget创建一个state对象
3.自定义一个状态类继承自State,重写build()方法,根据需要的逻辑处理返回widget,
build方法会在view状态改变时进行回调,重新渲染(自动响应式框架)

其中State类是一个组件的UI数据模型,是组件渲染时的数据依据,一系列的事件都会出发setState方法来推动状态机进行相应,状态的生命周期如下图(参考书:Flutter技术入门与实践):
状态的生命周期

更多文章资源,欢迎关注:程序猿阵线联盟

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DT从零到壹

您的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值