赞
踩
Flutter的核心理念:一切皆为Widget
(同Java万物皆对象,我们从来都不缺对象,只是缺一个new)。手机应用里的所有东西(按钮、输入框、卡片、列表、布局方式、动画处理等)都可以作为组件Widget
,开发者通过可组合的空间集合、丰富的动画库实现了富有感染力应用界面设计。
所以:Flutter具有一只的统一对象模型:Widget
。
1.Widget
下面有两大类组件:(如图例所示)
2.怎么更形象的理解Widget
呢?
Widget
和Android的布局控件一样,每个Widget都有丰富的属性和方法(颜色、大小、背景、边距等)。
每个Widget跟Android布局控件相似的都有回调方法处理(单击事件回调、手势事件回调等)
例如:
等,以上还有很多方法和属性,自我们实际的应用中供我们来使用。如果Widget
自带的属性不能满足我们项目设计的需求时,当然同我们Android和IOS一样,可以自定义Widget属性和方法。
3.必要时Widget
需要自定义
如果你不是没有任何开发经验,那么你一定知道任何app里都有可能有重用性比较高的控件。所以对于那么重用性比较高的,或者需要你自定义的控件的,我们需要将它们给封装起来,以便下次或者其他app中继续使用。这个时候就可以自定义Widget
封装起来,以供我们在其他的地方使用。
4.Widget
的交互状态
如果Widget
需要根据用户交互或其他原因进行更改,则此Widget
是有状态的,情况如下:
Stateless widgets
无状态控件是不可变的, 这意味着它们的属性不能改变 - 所有的值都是最终的,使用的时候要继承StatelessWidget
statefullWidget
有状态控件。持有的状态可在widget生命周期中发生变化实现一个 stateful widget 至少需要两个类:StatefulWidget
类State
类。 StatefulWidget
类本身是不变的,但是 State
类在widget
生命周期中始终存在,且可改变:1.自定义一个类继承自statefulWidget
2.重写createState()方法,为该statefulWidget创建一个state对象
3.自定义一个状态类继承自State,重写build()方法,根据需要的逻辑处理返回widget,
build方法会在view状态改变时进行回调,重新渲染(自动响应式框架)
其中State
类是一个组件的UI数据模型,是组件渲染时的数据依据,一系列的事件都会出发setState
方法来推动状态机进行相应,状态的生命周期如下图(参考书:Flutter技术入门与实践):
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。