Flutter之旅
上QQ阅读APP看书,第一时间看更新

1.4.2 认识Widget体系

Widget的子类多如牛毛,不低于200个。然后你“深陷泥潭”,看着一个个Widget的介绍,可谓剪不断,理还乱,别是一番滋味在心头。Widget有一个庞大的家族体系,下面列出各大家族的“长老级人物”:

所谓“擒贼先擒王”,你需要站在更高的角度去看待它们。在Widget中最重要、最常用的有四大家族,分成两个派系:展示&构建、布局&规则。

Stateless和Stateful家族是展示&构建派,它们更注重视觉的展现。比如Stateless家族的按钮可以设置成奇形怪状、花花绿绿的;Stateful家族的滑块可以要多酷炫有多酷炫,这也是界面所追求的效果。所以这个派系披着华丽的外衣,主要用于界面可视元的构建。我们自定义的Widget基本上都是这两种,因为它们决定的表现力正是我们所需要的:

如果把开发App当作一场战争,界面当成战场,那展示&构建派就是为你创建千军万马的军备来源。但俗话说“无规矩不成方圆”,就是有千军万马,也不一定能打胜仗。还需要谋略和军规,这就是布局&规则派的用武之地。它们能指定阵型,安排士兵该站在哪里,但并不到战场上去,而是深居营中,调兵遣将。

比如用单子布局有一些盒子对展示元的占位进行控制,不过有些单子布局也可以亲自上阵为展示元加buff,比如旋转、装饰、显隐、裁剪等,所以单子布局也具有功能性:

多子布局就更像军师了,一纸号令便可以调兵遣将,运筹帷幄之中,决胜千里之外:

当你站在一定的高度去看组件,它们只是一些配置的描述信息而已。我们做的事就是用规则来排布、展示元素,要有种排兵布阵,挥斥方遒的感觉。