重点:
1、Flutter采用了声明式UI的布局方式,什么是声明式UI?
2、声明式UI和命令式UI的异同?
Flutter的UI框架吸取了react的理念,即 UI是关于状态的函数。
声明式UI与响应式UI是对应的概念,考虑一下iOS/android的UI实现。
iOS:很纯粹的命令式,new view,addsubview,new view,addsubview,这样搞。
安卓:算是半命令式吧,xml声明了UI,这是声明式的部分;但程序运行时如果要修改某个view,仍是取到这个view,再去命令式地修改。
Flutter:每个组件,会有个build函数,这里会返回一个能够完整描述UI的对象结构。每当数据改变时,就重新调用build函数,返回新的结构。如何高效渲染,就是框架去做的事情了。通过这种方式,不管是UI的初始布局结构,还是后面的修改,都是build函数返回的对象结构去声明的,完整的声明式UI由此而来。所以Flutter是构建新的widget实例,而不是改变旧的实例。