Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。
Flutter框架是一个分层的结构:
Flutter框架Framework 层使用 Dart 实现
Material 层 包含 Android 风格的 Widget ,Cupertino 层 包含 iOS 风格的 Widget
Widgets 层包含 Widget
Rendering 层包含控制渲染的库;
Animation 层包含动画的库;Painting 层包含控制绘制的库;Gestures 层包含手势的库;
Foundation层 包含基础库(比如确定所属平台Android、iOS等的API、又如print、debug 相关的API)。
Engine层使用 C++ 实现,主要包括:Skia,Dart 和 Text;
Skia 层是开源的二维图形库, Dart层包含 Dart 相关的API,Text 层包含文字绘制展示相关的API。
Embedder是一个嵌入层
通过该层把Flutter嵌入到各个平台上去,Embedder的主要工作包括渲染Surface设置,线程设置,以及插件等。平台(如iOS)只是提供一个画布,剩余的所有渲染相关的逻辑都在Flutter内部,这就使得它具有了很好的跨端一致性。
一切皆为Widget:
Widget是Flutter应用程序用户界面的基本构建块。每个Widget都是用户界面一部分的不可变声明。 与其他将视图、控制器、布局和其他属性分离的框架不同,Flutter具有一致的统一对象模型:widget。
Widget组成Widget分为 StatelessWidget 和 StatefulWidget
StatelessWidget 是无状态的 Widget ,用于展示不需要改变显示内容的时候,使用StatelessWidget即可;
StatefulWidget 是有状态的 Widget ,需要改变显示内容的时候,需要使用 StatefulWidget ;StatefulWidget 的子类相当于存放了 State 的配置信息。StatefulWidget的界面显示效果由 State 来控制展示。 当 StatefulWidget 对应的界面数据变化后,调用 setState() 方法,然后系统会运行 buildContext() 就可以做到更新界面的效果。
Container 是一个容器Widget;
Column 用于展示成 列 排列的 Widget;
Text 用于展示文字;
Image 用于展示图片;
FlatButton 用于处理交互事件,同时,Flutter中可以使用GestureDetector 对Widget 进行包裹,也可以达到具备交互的效果的目的;
ListView 用于展示列表内容。
ListTile 列表项
网友评论